home *** CD-ROM | disk | FTP | other *** search
/ Zoom 2 / Zoom - Release 2 (1996)(Active Software)[!].iso / music / utilities / sonicdrumkit / sonic_drum_kit_source.amos / sonic_drum_kit_source.amosSourceCode
AMOS Source Code  |  1978-01-16  |  72KB  |  3,391 lines

  1. '
  2. '********************************* 
  3. '
  4. '          SONIC DRUM KIT
  5. '          --------------
  6. '
  7. '           VERSION 2
  8. '
  9. '      ï¿½ MALCOLM LAVERY 1994 
  10. '
  11. '
  12. 'THIS SOURCE CODE HAS BEEN GIVEN 
  13. 'TO AMOSZINE DISK MAG BY MALCOLM 
  14. 'LAVERY, IT IS NOT TO BE RESOLD!.
  15. '
  16. 'PLEASE FEEL FREE TO SEE HOW I DID 
  17. 'CERTAIN TASKS, AND TO USE ANY OF  
  18. 'MY PROCEDURES FROM WITHIN THIS  
  19. 'PROGRAM, PLEASE GIVE ME SOME CREDIT 
  20. 'IF YOU DO USE ANYTHING, THANK!!!
  21. '
  22. '********************************* 
  23. '
  24. '********************************* 
  25. '        SET VARIABLES 
  26. '********************************* 
  27. '
  28. VERSION$="V2.0"
  29. _TEMPO=25
  30. METRO=130
  31. METRO2=160-METRO
  32. _VOLUME=51
  33. _TUNE=25
  34. _SAMPLE=1
  35. _PLAY_FLAG=0
  36. _PAUSE_FLAG=0
  37. TRACK_1=1
  38. TRACK_2=1
  39. TRACK_3=1
  40. TRACK_4=1
  41. MEM_1=0
  42. MEM_2=0
  43. MEM_3=0
  44. MEM_4=0
  45. MEM_5=0
  46. MEM_1_1=0
  47. MEM_2_2=0
  48. MEM_3_3=0
  49. MEM_4_4=0
  50. MEM_5_5=0
  51. MEM_FLAG1=0
  52. MEM_FLAG2=0
  53. MEM_FLAG3=0
  54. MEM_FLAG4=0
  55. MEM_FLAG5=0
  56. LAST_EDITED=0
  57. LAST_POS=0
  58. _V_1=51
  59. _V_2=51
  60. _V_3=51
  61. _V_4=51
  62. FILE$="NONE"
  63. NUMBER$=""
  64. POSITION=0
  65. STORE_X1=0
  66. STORE_X2=0
  67. _LOOP_FLAG=0
  68. _FILTER_FLAG=1
  69. METRO_FLAG=0
  70. _REPEAT_FLAG=0
  71. METRO_SOUND=3
  72. _SCROLL_FLAG=1
  73. Volume 63
  74. Dim PADS(6),KEYS$(6)
  75. '
  76. '********************************* 
  77. ' MAKE DEFAULT DRUM PADS & KEYS  
  78. '********************************* 
  79. '
  80. PADS(1)=2
  81. PADS(2)=3
  82. PADS(3)=4
  83. PADS(4)=5
  84. PADS(5)=6
  85. PADS(6)=7
  86. '
  87. KEYS$(1)="1"
  88. KEYS$(2)="4"
  89. KEYS$(3)="8"
  90. KEYS$(4)="6"
  91. KEYS$(5)="3"
  92. KEYS$(6)="5"
  93. '
  94. '********************************* 
  95. '    MAKE EM GLOBEL TROTTERS 
  96. '********************************* 
  97. '
  98. Global SCORE_POS,_TEMPO,_SAMPLE,_PLAY_FLAG,_PAUSE_FLAG,FILE$,NUMBER$,_LOOP_FLAG,VERSION$,PADS(),KEYS$(),METRO,METRO_FLAG,METRO_SOUND,METRO2
  99. Global TRACK_1,TRACK_2,TRACK_3,TRACK_4,POSITION,_VOLUME,STORE_X1,STORE_X2,_FILTER_FLAG,_V_1,_V_2,_V_3,_V_4,_TUNE,_REPEAT_FLAG
  100. Global MEM_1,MEM_2,MEM_3,MEM_4,MEM_5,MEM_FLAG1,MEM_FLAG2,MEM_FLAG3,MEM_FLAG4,MEM_FLAG5,MEM_1_1,MEM_2_2,MEM_3_3,MEM_4_4,MEM_5_5,LAST_EDITED,LAST_POS
  101. Global _SCROLL_FLAG
  102. '
  103. '********************************* 
  104. ' LOAD A DRUM KIT (ICONS+SAMPLES)
  105. '********************************* 
  106. '
  107. '***** FLOPPY DISK ***** 
  108. '
  109. Load "SDK:drum_kits/drum_kit_1.kit"
  110. '
  111. '**** HARD DISK *****
  112. '
  113. '''Load "drum_kits/drum_kit_1.kit" 
  114. '
  115. '********************************* 
  116. '    RESERVE DRUM SCORE BANK 
  117. '********************************* 
  118. '
  119. Reserve As Chip Work 8,152
  120. Poke(Start(8)),_TEMPO
  121. Poke(Start(8)+1),_VOLUME
  122. Poke(Start(8)+2),_LOOP_FLAG
  123. SCORE_POS=Start(8)+4
  124. MEM_1=SCORE_POS
  125. MEM_2=SCORE_POS
  126. MEM_3=SCORE_POS
  127. MEM_4=SCORE_POS
  128. MEM_5=SCORE_POS
  129. LAST_EDITED=SCORE_POS
  130. '********************************* 
  131. '        SET UP SCREENS
  132. '********************************* 
  133. '
  134. INIT_DISPLAY
  135. '
  136. '********************************* 
  137. '           MAIN LOOP  
  138. '********************************* 
  139. '
  140. Screen 0
  141. _CENTRE_TEXT[10,"SCORE:"+FILE$]
  142. Wait Vbl 
  143. '
  144. _UPDATE[SCORE_POS]
  145. MESSAGE["          The credits          "]
  146. _ABOUT
  147. '
  148. '
  149. '
  150. Do 
  151.    IN_SCREEN=Scin(X Mouse,Y Mouse)
  152.    On IN_SCREEN Proc DUMMY,_GET_SAMPLE,_EDIT,MENU
  153. Loop 
  154. '
  155. '
  156. Procedure INIT_DISPLAY
  157.    '
  158.    _BACK_DISPLAY[78]
  159.    _SAMPLE_DISPLAY[50]
  160.    _SCORE_DISPLAY[78]
  161.    _MENU_DISPLAY[180]
  162. Limit Mouse 0,0 To 640,512
  163.    '
  164.    Screen 2
  165.    Fade 2,$0,$FFF,$333,$BBB,$88F,$F0,$F00,,
  166.    Wait 30
  167.    Screen 3
  168.    Fade 2,$0,$FFF,$333,$BBB,$88F,$F0,$F00,,
  169.    Wait 30
  170.    Screen 4
  171.    Fade 2,$0,$FFF,$333,$BBB,$88F,$F0,$F00,,
  172.    Wait 30
  173.    '
  174. End Proc
  175. Procedure _BACK_DISPLAY[YPOSITION]
  176.    '
  177.    Screen Open 0,640,100,8,Lowres
  178.    Curs Off : Flash Off : Cls 0
  179.    Palette $0,$0,$0,$0,$0,$0,$0,$0,$0,
  180.    Screen Display 0,,YPOSITION,,
  181.    '
  182.    _3D_DISPLAY[0,0,639,99,1,3]
  183.    _3D_DISPLAY[30,15,578,65,0,3]
  184.    _3D_DISPLAY[280,85,60,10,0,3]
  185. Screen 0
  186.    _3D_METER[30,85,240,10,Length(8)/72,6,4]
  187.    
  188.    _ZEROS[POSITION]
  189.    Ink 0,3
  190.    Text 286,93,NUMBER$
  191.    '
  192. End Proc
  193. Procedure _SAMPLE_DISPLAY[YPOSITION]
  194.    '
  195.    Screen Open 2,640,30,8,Hires
  196.    Curs Off : Flash Off : Cls 0
  197.    Get Palette 0
  198.    Screen Display 2,,YPOSITION,,
  199.    '
  200.    _3D_DISPLAY[0,0,639,10,1,3]
  201.    '
  202.    Ink 0,3
  203.    _CENTRE_TEXT[8,"SONIC DRUM KIT "+VERSION$+" BY MALCOLM LAVERY ï¿½1994"]
  204.    '
  205.    _3D_DISPLAY[0,11,639,15,1,3]
  206.    '
  207.    I=2
  208.    For X=0 To 640 Step 32
  209.       If I<Length(2)/2+2
  210.          If I=2
  211.             Paste Icon X,11,I+Length(2)/2
  212.          Else 
  213.             Paste Icon X,11,I
  214.          End If 
  215.       End If 
  216.       Inc I
  217.    Next X
  218.    '
  219. End Proc
  220. Procedure _SCORE_DISPLAY[YPOSITION]
  221.    '
  222.    Screen Open 3,640,100,8,Hires
  223.    Curs Off : Flash Off : Cls 0
  224.    Get Palette 0
  225.    Screen Display 3,,YPOSITION,,
  226.    '
  227.    _3D_DISPLAY[0,0,639,99,1,3]
  228.    _3D_DISPLAY[30,15,578,65,0,3]
  229.    '
  230.    _CENTRE_TEXT[10,"SCORE:"+FILE$]
  231.    '
  232.    Ink 0,3
  233.    Text 7,26,"T1"
  234.    Text 7,42,"T2"
  235.    Text 7,58,"T3"
  236.    Text 7,74,"T4"
  237.    '
  238.    Autoback 0
  239.    Bob Update Off 
  240.    Double Buffer 
  241.    '
  242. End Proc
  243. Procedure _UPDATE[SCORE_POS]
  244.    '
  245.    Screen 0
  246.    EXTRA=0
  247.    For X=32 To 600 Step 32
  248.       For Y=16 To 70 Step 16
  249.          IMAGE=Peek(SCORE_POS+EXTRA)
  250.          If IMAGE>0 and IMAGE<Length(2)/2+1
  251.             Paste Icon X,Y,IMAGE+Length(2)/2+1
  252.          Else 
  253.             If SCORE_POS+EXTRA>Start(8)+Length(8)-77
  254.                Ink 4
  255.                Bar X,Y To X+31,Y+15
  256.             Else 
  257.                Paste Icon X,Y,1
  258.             End If 
  259.             Poke(SCORE_POS+EXTRA),0
  260.          End If 
  261.          Inc EXTRA
  262.       Next Y
  263.    Next X
  264.    '
  265.    If TRACK_1=0
  266.       _DARKEN[0,32,16,606,31]
  267.    End If 
  268.    '
  269.    If TRACK_2=0
  270.       _DARKEN[0,32,32,606,47]
  271.    End If 
  272.    '
  273.    If TRACK_3=0
  274.       _DARKEN[0,32,48,606,63]
  275.    End If 
  276.    '
  277.    If TRACK_4=0
  278.       _DARKEN[0,32,64,606,79]
  279.    End If 
  280.    '
  281.    _ZEROS[POSITION]
  282.    Ink 0,3
  283.    Text 286,93,NUMBER$
  284.    Screen Copy 0,30,0,610,100 To Logic(3),30,0
  285.    Screen Swap 
  286.    Wait Vbl 
  287.    '
  288. End Proc
  289. Procedure _MENU_DISPLAY[YPOSITION]
  290.    '
  291.    Screen Open 4,640,120,8,Hires
  292.    Curs Off : Flash Off : Cls 0
  293.    Get Palette 0
  294.    Screen Display 4,,YPOSITION,,
  295.    '
  296.    _REDRAW_MENU
  297.    '
  298. End Proc
  299. Procedure _REDRAW_MENU
  300.    '
  301.    Screen 4
  302.    '
  303.    _3D_DISPLAY[0,0,639,15,1,3]
  304.    _3D_DISPLAY[0,16,100,49,1,3]
  305.    _3D_DISPLAY[101,16,68,49,1,3]
  306.    _3D_DISPLAY[105,19,60,10,0,3]
  307.    _3D_DISPLAY[105,41,60,10,0,3]
  308.    _3D_DISPLAY[170,16,349,49,1,3]
  309.    _3D_DISPLAY[520,16,140,49,1,3]
  310.    '
  311.    '
  312.    _3D_DISPLAY[0,66,639,16,1,3]
  313.    _3D_DISPLAY[4,69,630,10,0,4]
  314.    MESSAGE["Waiting for user input!"]
  315.    '
  316.    '
  317.    Reserve Zone 100
  318.    '
  319.    _3D_BUTTON[1,140,2,60,10,0,"STOP",4,0]
  320.    _3D_BUTTON[2,210,2,60,10,1,"PAUSE",3,0]
  321.    _3D_BUTTON[3,280,2,60,10,1,"REW",3,0]
  322.    _3D_BUTTON[4,350,2,60,10,1,"PLAY",3,0]
  323.    _3D_BUTTON[5,420,2,60,10,1,"FRW",3,0]
  324.    '
  325.    '***** TRACK ACTIVE BUTTONS *****
  326.    '
  327.    If TRACK_1=0
  328.       _3D_BUTTON[6,20,19,10,10,1,"X",3,0]
  329.    End If 
  330.    '
  331.    If TRACK_1=1
  332.       _3D_BUTTON[6,20,19,10,10,0,"",4,0]
  333.    End If 
  334.    '
  335.    If TRACK_2=0
  336.       _3D_BUTTON[7,20,30,10,10,1,"X",3,0]
  337.    End If 
  338.    '
  339.    If TRACK_2=1
  340.       _3D_BUTTON[7,20,30,10,10,0,"",4,0]
  341.    End If 
  342.    '
  343.    If TRACK_3=0
  344.       _3D_BUTTON[8,20,41,10,10,1,"X",3,0]
  345.    End If 
  346.    '
  347.    If TRACK_3=1
  348.       _3D_BUTTON[8,20,41,10,10,0,"",4,0]
  349.    End If 
  350.    '
  351.    If TRACK_4=0
  352.       _3D_BUTTON[9,20,52,10,10,1,"X",3,0]
  353.    End If 
  354.    '
  355.    If TRACK_4=1
  356.       _3D_BUTTON[9,20,52,10,10,0,"",4,0]
  357.    End If 
  358.    '
  359.    '***** TEMPO/TUNE SLIDERS *****
  360.    '
  361.    _HOR_SLIDER_TEMPO[10,106,31,60,8,0,4,3,_TEMPO,1]
  362.    _TUNE[12,106,54,60,8,0,4,3,_TUNE,1]
  363.    '
  364.    '***** MAIN BUTTONS *****
  365.    '
  366.    _3D_BUTTON[14,2,2,60,10,1,"START",3,0]
  367.    _3D_BUTTON[15,71,2,60,10,1,"END",3,0]
  368.    _3D_BUTTON[16,488,2,45,10,1,"SWAP",3,0]
  369.    '
  370.    '***** LOOP STATUS ***** 
  371.    '
  372.    If _LOOP_FLAG=0
  373.       _3D_BUTTON[17,541,2,45,10,1,"LOOP",3,0]
  374.    End If 
  375.    '
  376.    If _LOOP_FLAG=1
  377.       _3D_BUTTON[17,541,2,45,10,0,"ON",4,0]
  378.    End If 
  379.    '
  380.    _3D_BUTTON[18,174,18,60,10,1,"CUT",3,0]
  381.    _3D_BUTTON[19,244,18,60,10,1,"COPY",3,0]
  382.    _3D_BUTTON[20,314,18,60,10,1,"PASTE",3,0]
  383.    _3D_BUTTON[21,384,18,60,10,1,"C BLOCK",3,0]
  384.    _3D_BUTTON[22,454,18,60,10,1,"C SCORE",3,0]
  385.    _3D_BUTTON[23,174,34,60,10,1,"L KIT",3,0]
  386.    _3D_BUTTON[24,174,50,60,10,1,"ADD",3,0]
  387.    _3D_BUTTON[25,244,34,60,10,1,"L SCORE",3,0]
  388.    _3D_BUTTON[26,244,50,60,10,1,"S SCORE",3,0]
  389.    _3D_BUTTON[27,314,34,60,10,1,"L MOD",3,0]
  390.    _3D_BUTTON[28,314,50,60,10,1,"S MOD",3,0]
  391.    _3D_BUTTON[29,384,34,60,10,1,"L CUT",3,0]
  392.    _3D_BUTTON[30,384,50,60,10,1,"S CUT",3,0]
  393.    _3D_BUTTON[31,454,34,60,10,1,"PADS",3,0]
  394.    '
  395.    '
  396.    If _SCROLL_FLAG=0
  397.       _3D_BUTTON[32,454,50,60,10,1,"SCR OFF",3,0]
  398.    End If 
  399.    '
  400.    If _SCROLL_FLAG=1
  401.       _3D_BUTTON[32,454,50,60,10,0,"SCR ON",4,0]
  402.    End If 
  403.    '
  404.    
  405.    '
  406.    '***** FILTER STATUS ***** 
  407.    '
  408.    If _FILTER_FLAG=0
  409.       _3D_BUTTON[33,593,2,45,10,1,"FILT",3,0]
  410.       Led On 
  411.    End If 
  412.    '
  413.    If _FILTER_FLAG=1
  414.       _3D_BUTTON[33,593,2,45,10,0,"ON",4,0]
  415.       Led Off 
  416.    End If 
  417.    '
  418.    '***** TRACK VOLUME SLIDERS *****
  419.    '
  420.    _VOL_1[34,35,20,60,8,0,4,3,_V_1,1]
  421.    _VOL_2[35,35,31,60,8,0,4,3,_V_2,1]
  422.    _VOL_3[36,35,42,60,8,0,4,3,_V_3,1]
  423.    _VOL_3[37,35,53,60,8,0,4,3,_V_4,1]
  424.    '
  425.    '***** SCORE MEMORIES *****  
  426.    '
  427.    _3D_BUTTON[38,523,18,20,10,1,"M1",3,0]
  428.    _3D_BUTTON[39,546,18,20,10,1,"M2",3,0]
  429.    _3D_BUTTON[40,570,18,20,10,1,"M3",3,0]
  430.    _3D_BUTTON[41,594,18,20,10,1,"M4",3,0]
  431.    _3D_BUTTON[42,618,18,20,10,1,"M5",3,0]
  432.    '
  433.    _3D_BUTTON[43,523,34,55,10,1,"STORE",3,0]
  434.    _3D_BUTTON[44,582,34,55,10,1,"GOTO",3,0]
  435.    _3D_BUTTON[45,523,50,115,10,1,"LAST EDITED",3,0]
  436.    '
  437.    '
  438.    '
  439.    Ink 0,3
  440.    Text 2,27,"T1"
  441.    Text 2,38,"T2"
  442.    Text 2,49,"T3"
  443.    Text 2,60,"T4"
  444.    '
  445.    Ink 0,3
  446.    Text 108,27,"-TEMPO+"
  447.    Text 112,49,"-TUNE+"
  448.    '
  449. End Proc
  450. Procedure _JAM
  451.    '
  452.    Screen 4
  453.    Fade 1
  454.    Wait 15
  455.    '
  456.    Screen 4
  457.    '
  458.    Reserve Zone 50
  459.    '
  460.    _3D_DISPLAY[0,0,639,15,1,3]
  461.    _3D_DISPLAY[2,2,168,11,1,3]
  462.    _3D_DISPLAY[174,2,270,11,1,3]
  463.    _3D_DISPLAY[448,2,189,11,1,3]
  464.    _3D_DISPLAY[0,16,639,120,1,3]
  465.    _3D_DISPLAY[174,18,270,100,1,3]
  466.    _3D_DISPLAY[2,18,168,100,1,3]
  467.    _3D_DISPLAY[448,18,189,32,1,3]
  468.    _3D_DISPLAY[448,52,189,29,1,3]
  469.    '
  470.    _3D_DISPLAY[448,83,189,35,1,3]
  471.    '
  472.    Ink 0,3
  473.    Text 30,10,"PAD ASSIGNMENT"
  474.    Text 212,10,"USER DEFINABLE DRUM PADS"
  475.    Text 490,10,"USER CONTROLS"
  476.    
  477.    '
  478.    '***************************************** 
  479.    '       SET UP DRUM PAD BUTTONS  
  480.    '***************************************** 
  481.    '
  482.    _3D_HEX_BUTTON[20,226,46,1,3]
  483.    _3D_HEX_BUTTON[21,290,30,1,3]
  484.    _3D_HEX_BUTTON[22,354,46,1,3]
  485.    _3D_HEX_BUTTON[23,290,62,1,3]
  486.    _3D_HEX_BUTTON[24,226,78,1,3]
  487.    _3D_HEX_BUTTON[25,354,78,1,3]
  488.    '
  489.    Ink 0,3
  490.    Text 200,108,"1"
  491.    Text 200,51,"2"
  492.    Text 306,26,"3"
  493.    Text 410,51,"4"
  494.    Text 410,108,"5"
  495.    Text 306,104,"6"
  496.    '
  497.    '***************************************** 
  498.    '       SET UP OTHER BUTTONS   
  499.    '***************************************** 
  500.    '
  501.    '
  502.    _3D_BUTTON[28,45,21,82,15,1,"PAD 1",3,0]
  503.    _3D_BUTTON[29,45,37,82,15,1,"PAD 2",3,0]
  504.    _3D_BUTTON[30,45,53,82,15,1,"PAD 3",3,0]
  505.    _3D_BUTTON[31,45,69,82,15,1,"PAD 4",3,0]
  506.    _3D_BUTTON[32,45,85,82,15,1,"PAD 5",3,0]
  507.    _3D_BUTTON[33,45,101,82,15,1,"PAD 6",3,0]
  508.    '
  509.    If METRO_SOUND=0 : METRO_SOUND=1 : End If 
  510.    If METRO_SOUND>Length(2)/2
  511.       Paste Icon 454,21,2
  512.       METRO_SOUND=1
  513.    Else 
  514.       Paste Icon 454,21,METRO_SOUND+1
  515.    End If 
  516.    '
  517.    _3D_BUTTON[34,490,21,108,15,1,"METRONOME",3,0]
  518.    '
  519.    If METRO_FLAG=0
  520.       _3D_BUTTON[35,603,21,29,15,1,"OFF",3,0]
  521.    End If 
  522.    '
  523.    If METRO_FLAG=1
  524.       _3D_BUTTON[35,603,21,29,15,0,"ON",4,0]
  525.    End If 
  526.    '
  527.    _HOR_SLIDER_METRO[40,453,39,180,8,0,4,3,METRO,1]
  528.    '
  529.    If _REPEAT_FLAG=0
  530.       _3D_BUTTON[41,454,55,178,10,1,"PAD REPEAT OFF",3,0]
  531.    End If 
  532.    '
  533.    If _REPEAT_FLAG=1
  534.       _3D_BUTTON[41,454,55,178,10,0,"PAD REPEAT ON",4,0]
  535.    End If 
  536.    '
  537.    _3D_BUTTON[27,454,68,178,10,1,"SCORE EDITOR MENU",3,0]
  538.    '    
  539.    '***************************************** 
  540.    '       SET UP DRUM PAD ASSIGNS  
  541.    '***************************************** 
  542.    '
  543.    For Y=1 To 6
  544.       '
  545.       If PADS(Y)=0
  546.          PADS(Y)=1
  547.       End If 
  548.       Paste Icon 10,5+(Y*16),PADS(Y)
  549.       Paste Icon 131,5+(Y*16),1
  550.       Ink 0,3
  551.       Text 142,15+(Y*16),KEYS$(Y)
  552.       '
  553.    Next Y
  554.    '
  555.    Screen 4
  556.    Fade 1 To 2
  557.    Wait 15
  558.    '
  559.    Timer=0
  560.    '
  561.    Repeat 
  562.       '
  563.       M=Mouse Zone
  564.       '
  565.       If _REPEAT_FLAG=1
  566.          K=Mouse Key
  567.       Else 
  568.          K=Mouse Click
  569.       End If 
  570.       '
  571.       A$=Upper$(Inkey$)
  572.       '
  573.       '***************************************** 
  574.       '        TEST DRUM PAD BUTTONS 
  575.       '***************************************** 
  576.       '
  577.       If K=1 and M=20 and PADS(2)=1
  578.          ALERT_1
  579.       End If 
  580.       '
  581.       If K=1 and M=21 and PADS(3)=1
  582.          ALERT_1
  583.       End If 
  584.       '
  585.       If K=1 and M=22 and PADS(4)=1
  586.          ALERT_1
  587.       End If 
  588.       '
  589.       If K=1 and M=23 and PADS(6)=1
  590.          ALERT_1
  591.       End If 
  592.       '
  593.       If K=1 and M=24 and PADS(1)=1
  594.          ALERT_1
  595.       End If 
  596.       '
  597.       If K=1 and M=25 and PADS(5)=1
  598.          ALERT_1
  599.       End If 
  600.       '
  601.       '
  602.       If(K=1 and M=20 or A$=KEYS$(2)) and PADS(2)>1
  603.          _3D_HEX_BUTTON[20,226,46,0,4]
  604.          Sam Play %1000,PADS(2)-1,14000
  605.          Wait 4
  606.          _3D_HEX_BUTTON[20,226,46,1,3]
  607.       End If 
  608.       '
  609.       If(K=1 and M=21 or A$=KEYS$(3)) and PADS(3)>1
  610.          _3D_HEX_BUTTON[21,290,30,0,4]
  611.          Sam Play %100,PADS(3)-1,14000
  612.          Wait 4
  613.          _3D_HEX_BUTTON[21,290,30,1,3]
  614.       End If 
  615.       '
  616.       If(K=1 and M=22 or A$=KEYS$(4)) and PADS(4)>1
  617.          _3D_HEX_BUTTON[22,354,46,0,4]
  618.          Sam Play %10,PADS(4)-1,14000
  619.          Wait 4
  620.          _3D_HEX_BUTTON[22,354,46,1,3]
  621.       End If 
  622.       '
  623.       If(K=1 and M=23 or A$=KEYS$(6)) and PADS(6)>1
  624.          _3D_HEX_BUTTON[23,290,62,0,4]
  625.          Sam Play %100,PADS(6)-1,14000
  626.          Wait 4
  627.          _3D_HEX_BUTTON[23,290,62,1,3]
  628.       End If 
  629.       '
  630.       If(K=1 and M=24 or A$=KEYS$(1)) and PADS(1)>1
  631.          _3D_HEX_BUTTON[24,226,78,0,4]
  632.          Sam Play %1000,PADS(1)-1,14000
  633.          Wait 4
  634.          _3D_HEX_BUTTON[24,226,78,1,3]
  635.       End If 
  636.       '
  637.       If(K=1 and M=25 or A$=KEYS$(5)) and PADS(5)>1
  638.          _3D_HEX_BUTTON[25,354,78,0,4]
  639.          Sam Play %10,PADS(5)-1,14000
  640.          Wait 4
  641.          _3D_HEX_BUTTON[25,354,78,1,3]
  642.       End If 
  643.       '
  644.       '***************************************** 
  645.       '        TEST OTHER BUTTONS  
  646.       '***************************************** 
  647.       '
  648.       If Mouse Key=1 and M=28
  649.          _3D_BUTTON[28,45,21,82,15,0,"PAD 1",4,0]
  650.          _ASSIGN[1]
  651.          _3D_BUTTON[28,45,21,82,15,1,"PAD 1",3,0]
  652.       End If 
  653.       '
  654.       If Mouse Key=1 and M=29
  655.          _3D_BUTTON[29,45,37,82,15,0,"PAD 2",4,0]
  656.          _ASSIGN[2]
  657.          _3D_BUTTON[29,45,37,82,15,1,"PAD 2",3,0]
  658.       End If 
  659.       '
  660.       If Mouse Key=1 and M=30
  661.          _3D_BUTTON[30,45,53,82,15,0,"PAD 3",4,0]
  662.          _ASSIGN[3]
  663.          _3D_BUTTON[30,45,53,82,15,1,"PAD 3",3,0]
  664.       End If 
  665.       '
  666.       If Mouse Key=1 and M=31
  667.          _3D_BUTTON[31,45,69,82,15,0,"PAD 4",4,0]
  668.          _ASSIGN[4]
  669.          _3D_BUTTON[31,45,69,82,15,1,"PAD 4",3,0]
  670.       End If 
  671.       '
  672.       If Mouse Key=1 and M=32
  673.          _3D_BUTTON[32,45,85,82,15,0,"PAD 5",4,0]
  674.          _ASSIGN[5]
  675.          _3D_BUTTON[32,45,85,82,15,1,"PAD 5",3,0]
  676.       End If 
  677.       '
  678.       If Mouse Key=1 and M=33
  679.          _3D_BUTTON[33,45,101,82,15,0,"PAD 6",4,0]
  680.          _ASSIGN[6]
  681.          _3D_BUTTON[33,45,101,82,15,1,"PAD 6",3,0]
  682.       End If 
  683.       '
  684.       If Mouse Key=1 and M=35
  685.          _METRONOME
  686.          Wait 30
  687.       End If 
  688.       '
  689.       If Mouse Key=1 and M=34
  690.          _3D_BUTTON[34,490,21,108,15,0,"METRONOME",4,0]
  691.          _ASSIGN_METRO
  692.          _3D_BUTTON[34,490,21,108,15,1,"METRONOME",3,0]
  693.       End If 
  694.       '
  695.       If METRO_FLAG=1 and Timer>METRO2
  696.          Sam Play %1,METRO_SOUND,14000
  697.          Timer=0
  698.       End If 
  699.       '
  700.       If Mouse Key=1 and M=40
  701.          METRO2=160-METRO
  702.          _HOR_SLIDER_METRO[40,453,39,180,8,0,4,3,METRO,1]
  703.       End If 
  704.       '
  705.       If Mouse Key=1 and M=41
  706.          PAD_REPEAT
  707.          Wait 30
  708.       End If 
  709.       
  710.       '
  711.    Until Mouse Key=1 and M=27
  712.    '
  713.    '***************************************** 
  714.    '           REDRAW MAIN MENU 
  715.    '***************************************** 
  716.    '
  717.    _3D_BUTTON[27,454,68,178,10,0,"SCORE EDITOR MENU",4,0]
  718.    Screen 4
  719.    Fade 1
  720.    Wait 15
  721.    Cls 0
  722.    '
  723.    _REDRAW_MENU
  724.    '
  725.    Screen 4
  726.    Fade 1 To 2
  727.    Wait 15
  728.    '
  729. End Proc
  730. Procedure _ASSIGN[PAD]
  731.    '
  732.    '
  733.    '***************************************** 
  734.    '           GET SAMPLE FROM RACK 
  735.    '***************************************** 
  736.    '
  737.    Screen 0
  738.    '  
  739.    _3D_DISPLAY[160,20,320,50,1,3]
  740.    '
  741.    _CENTRE_TEXT2[30,"PICK A SAMPLE TO ASSIGN"]
  742.    '
  743.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  744.    Screen Swap 
  745.    Wait Vbl 
  746.    '
  747.    Wait 5
  748.    '
  749.    Screen 2
  750.    '
  751.    Repeat 
  752.       X=X Screen(2,X Mouse)/32
  753.       Y=Y Screen(2,Y Mouse+5)/16
  754.    Until Mouse Key=1 and Scin(X Mouse,Y Mouse)=2 and X<Length(2)/2 and Y>0
  755.    '
  756.    _3D_DISPLAY[0,11,639,15,1,3]
  757.    I=2
  758.    For XP=0 To 640 Step 32
  759.       If I<Length(2)/2+2
  760.          Paste Icon XP,11,I
  761.       End If 
  762.       Inc I
  763.    Next XP
  764.    Paste Icon X*32,Y*16-5,X+Length(2)/2+2
  765.    _SAMPLE=X+1
  766.    Sam Play %1000,_SAMPLE,14000
  767.    '   '
  768.    Screen 0
  769.    '  
  770.    _3D_DISPLAY[160,20,320,50,1,3]
  771.    '
  772.    _CENTRE_TEXT2[30,"ASSIGNED SAMPLE"]
  773.    '
  774.    Paste Icon 260,38,_SAMPLE+1
  775.    PADS(PAD)=_SAMPLE+1
  776.    '
  777.    Text 300,50," TO PAD "+Mid$(Str$(PAD),2)
  778.    '
  779.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  780.    Screen Swap 
  781.    Wait Vbl 
  782.    '
  783.    '***************************************** 
  784.    '           REDRAW PAD SAMPLES 
  785.    '***************************************** 
  786.    '
  787.    Screen 4
  788.    '
  789.    For Y=1 To 6
  790.       If PADS(Y)=0
  791.          PADS(Y)=1
  792.       End If 
  793.       Paste Icon 10,5+(Y*16),PADS(Y)
  794.    Next Y
  795.    '
  796.    Wait 80
  797.    '
  798.    '***************************************** 
  799.    '           ASSIGN KEY TO PAD  
  800.    '***************************************** 
  801.    '
  802.    Screen 0
  803.    '  
  804.    _3D_DISPLAY[160,20,320,50,1,3]
  805.    '
  806.    _CENTRE_TEXT2[30,"PRESS A KEY TO ASSIGN"]
  807.    '
  808.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  809.    Screen Swap 
  810.    Wait Vbl 
  811.    
  812.    '
  813.    Repeat 
  814.       '
  815.       A$=Upper$(Inkey$)
  816.       '
  817.    Until A$<>""
  818.    '
  819.    '    
  820.    Screen 0
  821.    '  
  822.    _3D_DISPLAY[160,20,320,50,1,3]
  823.    '
  824.    _CENTRE_TEXT2[30,"ASSIGNED KEY"]
  825.    '
  826.    KEYS$(PAD)=A$
  827.    Sam Play %1000,_SAMPLE,14000
  828.    '
  829.    Text 278,50,KEYS$(PAD)+" TO PAD "+Mid$(Str$(PAD),2)
  830.    '
  831.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  832.    Screen Swap 
  833.    Wait Vbl 
  834.    '
  835.    '***************************************** 
  836.    '           REDRAW PAD SAMPLES 
  837.    '***************************************** 
  838.    '
  839.    Screen 4
  840.    '
  841.    For Y=1 To 6
  842.       '
  843.       Paste Icon 131,5+(Y*16),1
  844.       Ink 0,3
  845.       Text 142,15+(Y*16),KEYS$(Y)
  846.       '
  847.    Next Y
  848.    '
  849.    Wait 80
  850.    '
  851.    _UPDATE[SCORE_POS]
  852.    '
  853.    Screen 4
  854.    '
  855. End Proc
  856. Procedure _METRONOME
  857.    '
  858.    METRO_FLAG=1-METRO_FLAG
  859.    '
  860.    If METRO_FLAG=0
  861.       _3D_BUTTON[35,603,21,29,15,1,"OFF",3,0]
  862.    End If 
  863.    '
  864.    If METRO_FLAG=1
  865.       _3D_BUTTON[35,603,21,29,15,0,"ON",4,0]
  866.       Timer=0
  867.    End If 
  868.    '
  869. End Proc
  870. Procedure _ASSIGN_METRO
  871.    '
  872.    '
  873.    '***************************************** 
  874.    '           GET SAMPLE FROM RACK 
  875.    '***************************************** 
  876.    '
  877.    Screen 0
  878.    '  
  879.    _3D_DISPLAY[160,20,320,50,1,3]
  880.    '
  881.    _CENTRE_TEXT2[30,"PICK A SAMPLE TO ASSIGN"]
  882.    '
  883.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  884.    Screen Swap 
  885.    Wait Vbl 
  886.    '
  887.    Wait 5
  888.    '
  889.    Screen 2
  890.    '
  891.    Repeat 
  892.       X=X Screen(2,X Mouse)/32
  893.       Y=Y Screen(2,Y Mouse+5)/16
  894.    Until Mouse Key=1 and Scin(X Mouse,Y Mouse)=2 and X<Length(2)/2 and Y>0
  895.    '
  896.    _3D_DISPLAY[0,11,639,15,1,3]
  897.    I=2
  898.    For XP=0 To 640 Step 32
  899.       If I<Length(2)/2+2
  900.          Paste Icon XP,11,I
  901.       End If 
  902.       Inc I
  903.    Next XP
  904.    Paste Icon X*32,Y*16-5,X+Length(2)/2+2
  905.    _SAMPLE=X+1
  906.    Sam Play %1000,_SAMPLE,14000
  907.    '   '
  908.    Screen 0
  909.    '  
  910.    _3D_DISPLAY[160,20,320,50,1,3]
  911.    '
  912.    _CENTRE_TEXT2[30,"CHANGING METRONOME"]
  913.    _CENTRE_TEXT2[40,"SAMPLE TO"]
  914.    '
  915.    '
  916.    METRO_SOUND=_SAMPLE
  917.    Paste Icon 305,48,METRO_SOUND+1
  918.    '
  919.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  920.    Screen Swap 
  921.    Wait Vbl 
  922.    '
  923.    Screen 4
  924.    Paste Icon 454,21,METRO_SOUND+1
  925.    Wait 80
  926.    '
  927.    _UPDATE[SCORE_POS]
  928.    Screen 4
  929.    '
  930. End Proc
  931. Procedure PAD_REPEAT
  932.    '
  933.    _REPEAT_FLAG=1-_REPEAT_FLAG
  934.    '
  935.    If _REPEAT_FLAG=0
  936.       _3D_BUTTON[41,454,55,178,10,1,"PAD REPEAT OFF",3,0]
  937.    End If 
  938.    '
  939.    If _REPEAT_FLAG=1
  940.       _3D_BUTTON[41,454,55,178,10,0,"PAD REPEAT ON",4,0]
  941.    End If 
  942.    '
  943. End Proc
  944. Procedure _SCROLL
  945.    '
  946.    _SCROLL_FLAG=1-_SCROLL_FLAG
  947.    '
  948.    If _SCROLL_FLAG=0
  949.    _3D_BUTTON[32,454,50,60,10,1,"SCR OFF",3,0]
  950.       MESSAGE[" Score scroll is now inactive! "]
  951.    End If 
  952.    '
  953.    If _SCROLL_FLAG=1
  954.    _3D_BUTTON[32,454,50,60,10,0,"SCR ON",4,0]
  955.       MESSAGE["  Score scroll is now active!  "]
  956.    End If 
  957.    '
  958. End Proc
  959. Procedure ALERT_1
  960.    '
  961.    Bell 
  962.    '
  963.    Screen 0
  964.    '  
  965.    _3D_DISPLAY[160,20,320,50,1,3]
  966.    '
  967.    _CENTRE_TEXT2[45,"PAD NOT ASSIGNED!"]
  968.    '
  969.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  970.    Screen Swap 
  971.    Wait Vbl 
  972.    '
  973.    Wait 100
  974.    _UPDATE[SCORE_POS]
  975.    Screen 4
  976.    '
  977. End Proc
  978. Procedure _3D_HEX_BUTTON[_ZONENUMBER,X,Y,IN_OUT,_FILL]
  979.    '
  980.    If IN_OUT=0
  981.       HILIGHT=2
  982.       SHADOW=1
  983.    End If 
  984.    '
  985.    If IN_OUT=1
  986.       HILIGHT=1
  987.       SHADOW=2
  988.    End If 
  989.    '
  990.    Ink HILIGHT
  991.    Polyline X+40,Y To X,Y To X-20,Y+15 To X,Y+30
  992.    '
  993.    Ink SHADOW
  994.    Polyline X,Y+30 To X+40,Y+30 To X+60,Y+15 To X+40,Y
  995.    '
  996.    Ink _FILL
  997.    Polygon X+39,Y+1 To X,Y+1 To X-18,Y+15 To X+1,Y+29 To X+39,Y+29 To X+58,Y+15 To X+39,Y
  998.    '
  999.    Set Zone _ZONENUMBER,X-20,Y To X+60,Y+30
  1000.    '  
  1001. End Proc
  1002. Procedure _3D_DISPLAY[X,Y,WIDTH,HEIGHT,IN_OUT,_FILL]
  1003.    '
  1004.    '
  1005.    '
  1006.    If IN_OUT=0
  1007.       HILIGHT=2
  1008.       SHADOW=1
  1009.    End If 
  1010.    '
  1011.    '
  1012.    If IN_OUT=1
  1013.       HILIGHT=1
  1014.       SHADOW=2
  1015.    End If 
  1016.    '
  1017.    '
  1018.    Ink HILIGHT
  1019.    Draw X,Y To X+WIDTH,Y
  1020.    Draw X,Y To X,Y+HEIGHT
  1021.    '
  1022.    Ink SHADOW
  1023.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1024.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1025.    '
  1026.    Ink _FILL
  1027.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1028.    '
  1029.    '
  1030. End Proc
  1031. Procedure _3D_BUTTON[_ZONENUMBER,X,Y,WIDTH,HEIGHT,IN_OUT,TEX$,_FILL,_INK]
  1032.    '
  1033.    '
  1034.    '
  1035.    LE=Text Length(TEX$)
  1036.    X_TEXT=X+WIDTH/2
  1037.    Y_TEXT=Y+HEIGHT/2+3
  1038.    '
  1039.    '
  1040.    If IN_OUT=0
  1041.       HILIGHT=2
  1042.       SHADOW=1
  1043.    End If 
  1044.    '
  1045.    '
  1046.    If IN_OUT=1
  1047.       HILIGHT=1
  1048.       SHADOW=2
  1049.    End If 
  1050.    '
  1051.    '
  1052.    Ink HILIGHT
  1053.    Draw X,Y To X+WIDTH,Y
  1054.    Draw X,Y To X,Y+HEIGHT
  1055.    '
  1056.    Ink SHADOW
  1057.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1058.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1059.    '
  1060.    Ink _FILL
  1061.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1062.    '
  1063.    Gr Writing 0
  1064.    Ink _INK
  1065.    Text X_TEXT-LE/2,Y_TEXT,TEX$
  1066.    Gr Writing 1
  1067.    '
  1068.    Set Zone _ZONENUMBER,X,Y To X+WIDTH,Y+HEIGHT
  1069.    '  
  1070. End Proc
  1071. Procedure _3D_INFO_TEXT[X,Y,WIDTH,HEIGHT,TEX$,_FILL,_INK]
  1072.    '
  1073.    '
  1074.    '
  1075.    LE=Text Length(TEX$)
  1076.    X_TEXT=X+WIDTH/2
  1077.    Y_TEXT=Y+HEIGHT/2+3
  1078.    '
  1079.    '
  1080.    HILIGHT=1
  1081.    SHADOW=2
  1082.    '
  1083.    '
  1084.    Ink HILIGHT
  1085.    Draw X,Y To X+WIDTH,Y
  1086.    Draw X,Y To X,Y+HEIGHT
  1087.    '
  1088.    Ink SHADOW
  1089.    Draw X+WIDTH,Y+1 To X+WIDTH,Y+HEIGHT
  1090.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1091.    '
  1092.    '
  1093.    HILIGHT=2
  1094.    SHADOW=1
  1095.    '
  1096.    '
  1097.    Ink HILIGHT
  1098.    Draw X+1,Y+1 To X+WIDTH-1,Y+1
  1099.    Draw X+1,Y+1 To X+1,Y+HEIGHT-1
  1100.    '
  1101.    Ink SHADOW
  1102.    Draw X+WIDTH-1,Y To X+WIDTH-1,Y+HEIGHT-1
  1103.    Draw X+WIDTH-1,Y+HEIGHT-1 To X-1,Y+HEIGHT-1
  1104.    '
  1105.    Ink _FILL
  1106.    Bar X+2,Y+2 To X+WIDTH-2,Y+HEIGHT-2
  1107.    '
  1108.    Gr Writing 0
  1109.    Ink _INK
  1110.    Text X_TEXT-LE/2,Y_TEXT,TEX$
  1111.    Gr Writing 1
  1112.    '  
  1113. End Proc
  1114. Procedure _3D_METER[X,Y,WIDTH,HEIGHT,_VALUE,FCOL,BCOL]
  1115.    '
  1116.    '
  1117.    Set Pattern 0
  1118.    Gr Writing 1
  1119.    '
  1120.    LE=Text Length(TEX$)
  1121.    X_TEXT=X+WIDTH/2
  1122.    Y_TEXT=Y+HEIGHT/2+3
  1123.    '
  1124.    '
  1125.    HILIGHT=1
  1126.    SHADOW=2
  1127.    '
  1128.    '
  1129.    Ink HILIGHT
  1130.    Draw X,Y To X+WIDTH,Y
  1131.    Draw X,Y To X,Y+HEIGHT
  1132.    '
  1133.    Ink SHADOW
  1134.    Draw X+WIDTH,Y+1 To X+WIDTH,Y+HEIGHT
  1135.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1136.    '
  1137.    '
  1138.    HILIGHT=2
  1139.    SHADOW=1
  1140.    '
  1141.    '
  1142.    Ink HILIGHT
  1143.    Draw X+1,Y+1 To X+WIDTH-1,Y+1
  1144.    Draw X+1,Y+1 To X+1,Y+HEIGHT-1
  1145.    '
  1146.    Ink SHADOW
  1147.    Draw X+WIDTH-1,Y To X+WIDTH-1,Y+HEIGHT-1
  1148.    Draw X+WIDTH-1,Y+HEIGHT-1 To X-1,Y+HEIGHT-1
  1149.    '
  1150.    Ink BCOL
  1151.    Bar X+2,Y+2 To X+WIDTH-2,Y+HEIGHT-2
  1152.    '
  1153.    '
  1154.    If _VALUE+X<X+(WIDTH-5) and _VALUE>0
  1155.       Ink FCOL
  1156.       Bar X+2,Y+2 To X+2+_VALUE,Y+HEIGHT-2
  1157.    Else 
  1158.       Ink FCOL
  1159.       Bar X+2,Y+2 To X+WIDTH-3,Y+HEIGHT-2
  1160.    End If 
  1161.    '
  1162.    '  
  1163. End Proc
  1164. Procedure _HOR_SLIDER_TEMPO[_ZONENUMBER,X,Y,WIDTH,HEIGHT,IN_OUT,_FILL,_INK,_TEMPO,_STEP]
  1165.    '
  1166.    Screen 4
  1167.    '
  1168.    If IN_OUT=0
  1169.       HILIGHT=2
  1170.       SHADOW=1
  1171.    End If 
  1172.    '
  1173.    '
  1174.    If IN_OUT=1
  1175.       HILIGHT=1
  1176.       SHADOW=2
  1177.    End If 
  1178.    '
  1179.    '
  1180.    Ink HILIGHT
  1181.    Draw X,Y To X+WIDTH-1,Y
  1182.    Draw X,Y To X,Y+HEIGHT-1
  1183.    '
  1184.    Ink SHADOW
  1185.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1186.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1187.    '
  1188.    Ink _FILL
  1189.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1190.    '
  1191.    If X+_TEMPO<X Screen(4,X Mouse) and _TEMPO<51 and Mouse Zone=10
  1192.       Add _TEMPO,_STEP
  1193.    End If 
  1194.    '
  1195.    If X+_TEMPO>X Screen(4,X Mouse) and _TEMPO>1 and Mouse Zone=10
  1196.       Add _TEMPO,-_STEP
  1197.    End If 
  1198.    '
  1199.    Ink SHADOW
  1200.    Draw X+_TEMPO,Y+1 To X+_TEMPO+WIDTH/10,Y+1
  1201.    Draw X+_TEMPO,Y+1 To X+_TEMPO,Y+HEIGHT-1
  1202.    '
  1203.    Ink HILIGHT
  1204.    Draw X+_TEMPO+WIDTH/10,Y+1 To X+_TEMPO+WIDTH/10,Y+HEIGHT-1
  1205.    Draw X+_TEMPO+WIDTH/10,Y+HEIGHT-1 To X+_TEMPO,Y+HEIGHT-1
  1206.    '
  1207.    Ink _INK
  1208.    Bar X+_TEMPO+1,Y+2 To X+_TEMPO+WIDTH/10-1,Y+HEIGHT-2
  1209.    Wait Vbl 
  1210.    '
  1211.    Set Zone _ZONENUMBER,X,Y To X+WIDTH,Y+HEIGHT
  1212.    '
  1213. '   Wait 2 
  1214.    '  
  1215. End Proc
  1216. Procedure _TUNE[_ZONENUMBER,X,Y,WIDTH,HEIGHT,IN_OUT,_FILL,_INK,_TUNE,_STEP]
  1217.    '
  1218.    Screen 4
  1219.    '
  1220.    If IN_OUT=0
  1221.       HILIGHT=2
  1222.       SHADOW=1
  1223.    End If 
  1224.    '
  1225.    '
  1226.    If IN_OUT=1
  1227.       HILIGHT=1
  1228.       SHADOW=2
  1229.    End If 
  1230.    '
  1231.    '
  1232.    Ink HILIGHT
  1233.    Draw X,Y To X+WIDTH-1,Y
  1234.    Draw X,Y To X,Y+HEIGHT-1
  1235.    '
  1236.    Ink SHADOW
  1237.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1238.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1239.    '
  1240.    Ink _FILL
  1241.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1242.    '
  1243.    If X+_TUNE<X Screen(4,X Mouse) and _TUNE<51 and Mouse Zone=12
  1244.       Add _TUNE,_STEP
  1245.    End If 
  1246.    '
  1247.    If X+_TUNE>X Screen(4,X Mouse) and _TUNE>1 and Mouse Zone=12
  1248.       Add _TUNE,-_STEP
  1249.    End If 
  1250.    '
  1251.    Ink SHADOW
  1252.    Draw X+_TUNE,Y+1 To X+_TUNE+WIDTH/10,Y+1
  1253.    Draw X+_TUNE,Y+1 To X+_TUNE,Y+HEIGHT-1
  1254.    '
  1255.    Ink HILIGHT
  1256.    Draw X+_TUNE+WIDTH/10,Y+1 To X+_TUNE+WIDTH/10,Y+HEIGHT-1
  1257.    Draw X+_TUNE+WIDTH/10,Y+HEIGHT-1 To X+_TUNE,Y+HEIGHT-1
  1258.    '
  1259.    Ink _INK
  1260.    Bar X+_TUNE+1,Y+2 To X+_TUNE+WIDTH/10-1,Y+HEIGHT-2
  1261.    Wait Vbl 
  1262.    '
  1263.    Set Zone _ZONENUMBER,X,Y To X+WIDTH,Y+HEIGHT
  1264.    '
  1265.    '   Wait 2 
  1266.    '  
  1267. End Proc
  1268. Procedure _HOR_SLIDER_METRO[_ZONENUMBER,X,Y,WIDTH,HEIGHT,IN_OUT,_FILL,_INK,METRO,_STEP]
  1269.    '
  1270.    Screen 4
  1271.    '
  1272.    If IN_OUT=0
  1273.       HILIGHT=2
  1274.       SHADOW=1
  1275.    End If 
  1276.    '
  1277.    '
  1278.    If IN_OUT=1
  1279.       HILIGHT=1
  1280.       SHADOW=2
  1281.    End If 
  1282.    '
  1283.    '
  1284.    Ink HILIGHT
  1285.    Draw X,Y To X+WIDTH-1,Y
  1286.    Draw X,Y To X,Y+HEIGHT-1
  1287.    '
  1288.    Ink SHADOW
  1289.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1290.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1291.    '
  1292.    Ink _FILL
  1293.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1294.    '
  1295.    If X+METRO<X Screen(4,X Mouse) and METRO<160 and Mouse Zone=40
  1296.       Add METRO,_STEP
  1297.    End If 
  1298.    '
  1299.    If X+METRO>X Screen(4,X Mouse) and METRO>1 and Mouse Zone=40
  1300.       Add METRO,-_STEP
  1301.    End If 
  1302.    '
  1303.    Ink SHADOW
  1304.    Draw X+METRO,Y+1 To X+METRO+WIDTH/10,Y+1
  1305.    Draw X+METRO,Y+1 To X+METRO,Y+HEIGHT-1
  1306.    '
  1307.    Ink HILIGHT
  1308.    Draw X+METRO+WIDTH/10,Y+1 To X+METRO+WIDTH/10,Y+HEIGHT-1
  1309.    Draw X+METRO+WIDTH/10,Y+HEIGHT-1 To X+METRO,Y+HEIGHT-1
  1310.    '
  1311.    Ink _INK
  1312.    Bar X+METRO+1,Y+2 To X+METRO+WIDTH/10-1,Y+HEIGHT-2
  1313.    Wait Vbl 
  1314.    '
  1315.    Set Zone _ZONENUMBER,X,Y To X+WIDTH,Y+HEIGHT
  1316.    '
  1317. '   Wait 2 
  1318.    '  
  1319. End Proc
  1320. Procedure _VOL_1[_ZONENUMBER,X,Y,WIDTH,HEIGHT,IN_OUT,_FILL,_INK,_V_1,_STEP]
  1321.    '
  1322.    Screen 4
  1323.    '
  1324.    If IN_OUT=0
  1325.       HILIGHT=2
  1326.       SHADOW=1
  1327.    End If 
  1328.    '
  1329.    '
  1330.    If IN_OUT=1
  1331.       HILIGHT=1
  1332.       SHADOW=2
  1333.    End If 
  1334.    '
  1335.    '
  1336.    Ink HILIGHT
  1337.    Draw X,Y To X+WIDTH-1,Y
  1338.    Draw X,Y To X,Y+HEIGHT-1
  1339.    '
  1340.    Ink SHADOW
  1341.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1342.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1343.    '
  1344.    Ink _FILL
  1345.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1346.    '
  1347.    If X+_V_1<X Screen(4,X Mouse) and _V_1<51 and Mouse Zone=34
  1348.       Add _V_1,_STEP
  1349.    End If 
  1350.    '
  1351.    If X+_V_1>X Screen(4,X Mouse) and _V_1>1 and Mouse Zone=34
  1352.       Add _V_1,-_STEP
  1353.    End If 
  1354.    '
  1355.    Ink SHADOW
  1356.    Draw X+_V_1,Y+1 To X+_V_1+WIDTH/10,Y+1
  1357.    Draw X+_V_1,Y+1 To X+_V_1,Y+HEIGHT-1
  1358.    '
  1359.    Ink HILIGHT
  1360.    Draw X+_V_1+WIDTH/10,Y+1 To X+_V_1+WIDTH/10,Y+HEIGHT-1
  1361.    Draw X+_V_1+WIDTH/10,Y+HEIGHT-1 To X+_V_1,Y+HEIGHT-1
  1362.    '
  1363.    Ink _INK
  1364.    Bar X+_V_1+1,Y+2 To X+_V_1+WIDTH/10-1,Y+HEIGHT-2
  1365.    Wait Vbl 
  1366.    '
  1367.    Set Zone _ZONENUMBER,X,Y To X+WIDTH,Y+HEIGHT
  1368.    '
  1369. '   Wait 2 
  1370.    '  
  1371. End Proc
  1372. Procedure _VOL_2[_ZONENUMBER,X,Y,WIDTH,HEIGHT,IN_OUT,_FILL,_INK,_V_2,_STEP]
  1373.    '
  1374.    Screen 4
  1375.    '
  1376.    If IN_OUT=0
  1377.       HILIGHT=2
  1378.       SHADOW=1
  1379.    End If 
  1380.    '
  1381.    '
  1382.    If IN_OUT=1
  1383.       HILIGHT=1
  1384.       SHADOW=2
  1385.    End If 
  1386.    '
  1387.    '
  1388.    Ink HILIGHT
  1389.    Draw X,Y To X+WIDTH-1,Y
  1390.    Draw X,Y To X,Y+HEIGHT-1
  1391.    '
  1392.    Ink SHADOW
  1393.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1394.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1395.    '
  1396.    Ink _FILL
  1397.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1398.    '
  1399.    If X+_V_2<X Screen(4,X Mouse) and _V_2<51 and Mouse Zone=35
  1400.       Add _V_2,_STEP
  1401.    End If 
  1402.    '
  1403.    If X+_V_2>X Screen(4,X Mouse) and _V_2>1 and Mouse Zone=35
  1404.       Add _V_2,-_STEP
  1405.    End If 
  1406.    '
  1407.    Ink SHADOW
  1408.    Draw X+_V_2,Y+1 To X+_V_2+WIDTH/10,Y+1
  1409.    Draw X+_V_2,Y+1 To X+_V_2,Y+HEIGHT-1
  1410.    '
  1411.    Ink HILIGHT
  1412.    Draw X+_V_2+WIDTH/10,Y+1 To X+_V_2+WIDTH/10,Y+HEIGHT-1
  1413.    Draw X+_V_2+WIDTH/10,Y+HEIGHT-1 To X+_V_2,Y+HEIGHT-1
  1414.    '
  1415.    Ink _INK
  1416.    Bar X+_V_2+1,Y+2 To X+_V_2+WIDTH/10-1,Y+HEIGHT-2
  1417.    Wait Vbl 
  1418.    '
  1419.    Set Zone _ZONENUMBER,X,Y To X+WIDTH,Y+HEIGHT
  1420.    '
  1421. '   Wait 2 
  1422.    '  
  1423. End Proc
  1424. Procedure _VOL_3[_ZONENUMBER,X,Y,WIDTH,HEIGHT,IN_OUT,_FILL,_INK,_V_3,_STEP]
  1425.    '
  1426.    Screen 4
  1427.    '
  1428.    If IN_OUT=0
  1429.       HILIGHT=2
  1430.       SHADOW=1
  1431.    End If 
  1432.    '
  1433.    '
  1434.    If IN_OUT=1
  1435.       HILIGHT=1
  1436.       SHADOW=2
  1437.    End If 
  1438.    '
  1439.    '
  1440.    Ink HILIGHT
  1441.    Draw X,Y To X+WIDTH-1,Y
  1442.    Draw X,Y To X,Y+HEIGHT-1
  1443.    '
  1444.    Ink SHADOW
  1445.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1446.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1447.    '
  1448.    Ink _FILL
  1449.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1450.    '
  1451.    If X+_V_3<X Screen(4,X Mouse) and _V_3<51 and Mouse Zone=36
  1452.       Add _V_3,_STEP
  1453.    End If 
  1454.    '
  1455.    If X+_V_3>X Screen(4,X Mouse) and _V_3>1 and Mouse Zone=36
  1456.       Add _V_3,-_STEP
  1457.    End If 
  1458.    '
  1459.    Ink SHADOW
  1460.    Draw X+_V_3,Y+1 To X+_V_3+WIDTH/10,Y+1
  1461.    Draw X+_V_3,Y+1 To X+_V_3,Y+HEIGHT-1
  1462.    '
  1463.    Ink HILIGHT
  1464.    Draw X+_V_3+WIDTH/10,Y+1 To X+_V_3+WIDTH/10,Y+HEIGHT-1
  1465.    Draw X+_V_3+WIDTH/10,Y+HEIGHT-1 To X+_V_3,Y+HEIGHT-1
  1466.    '
  1467.    Ink _INK
  1468.    Bar X+_V_3+1,Y+2 To X+_V_3+WIDTH/10-1,Y+HEIGHT-2
  1469.    Wait Vbl 
  1470.    '
  1471.    Set Zone _ZONENUMBER,X,Y To X+WIDTH,Y+HEIGHT
  1472.    '
  1473. '   Wait 2 
  1474.    '  
  1475. End Proc
  1476. Procedure _VOL_4[_ZONENUMBER,X,Y,WIDTH,HEIGHT,IN_OUT,_FILL,_INK,_V_4,_STEP]
  1477.    '
  1478.    Screen 4
  1479.    '
  1480.    If IN_OUT=0
  1481.       HILIGHT=2
  1482.       SHADOW=1
  1483.    End If 
  1484.    '
  1485.    '
  1486.    If IN_OUT=1
  1487.       HILIGHT=1
  1488.       SHADOW=2
  1489.    End If 
  1490.    '
  1491.    '
  1492.    Ink HILIGHT
  1493.    Draw X,Y To X+WIDTH-1,Y
  1494.    Draw X,Y To X,Y+HEIGHT-1
  1495.    '
  1496.    Ink SHADOW
  1497.    Draw X+WIDTH,Y To X+WIDTH,Y+HEIGHT
  1498.    Draw X+WIDTH,Y+HEIGHT To X,Y+HEIGHT
  1499.    '
  1500.    Ink _FILL
  1501.    Bar X+1,Y+1 To X+WIDTH-1,Y+HEIGHT-1
  1502.    '
  1503.    If X+_V_4<X Screen(4,X Mouse) and _V_4<51 and Mouse Zone=37
  1504.       Add _V_4,_STEP
  1505.    End If 
  1506.    '
  1507.    If X+_V_4>X Screen(4,X Mouse) and _V_4>1 and Mouse Zone=37
  1508.       Add _V_4,-_STEP
  1509.    End If 
  1510.    '
  1511.    Ink SHADOW
  1512.    Draw X+_V_4,Y+1 To X+_V_4+WIDTH/10,Y+1
  1513.    Draw X+_V_4,Y+1 To X+_V_4,Y+HEIGHT-1
  1514.    '
  1515.    Ink HILIGHT
  1516.    Draw X+_V_4+WIDTH/10,Y+1 To X+_V_4+WIDTH/10,Y+HEIGHT-1
  1517.    Draw X+_V_4+WIDTH/10,Y+HEIGHT-1 To X+_V_4,Y+HEIGHT-1
  1518.    '
  1519.    Ink _INK
  1520.    Bar X+_V_4+1,Y+2 To X+_V_4+WIDTH/10-1,Y+HEIGHT-2
  1521.    Wait Vbl 
  1522.    '
  1523.    Set Zone _ZONENUMBER,X,Y To X+WIDTH,Y+HEIGHT
  1524.    '
  1525. '   Wait 2 
  1526.    '  
  1527. End Proc
  1528. Procedure _PLAY[_TEMPO]
  1529.    '
  1530.    Volume %1000,_V_1+12
  1531.    Volume %100,_V_2+12
  1532.    Volume %10,_V_3+12
  1533.    Volume %1,_V_4+12
  1534.    '
  1535.    Do 
  1536.       '
  1537.       Screen 4
  1538.       M=Mouse Zone
  1539.       '
  1540.       If SCORE_POS>Start(8)+Length(8)-80 and _LOOP_FLAG=1
  1541.          Screen 4
  1542.          SCORE_POS=Start(8)+4
  1543.          POSITION=0
  1544.       End If 
  1545.       '
  1546.       '
  1547.       If SCORE_POS>Start(8)+Length(8)-80
  1548.          Screen 4
  1549.          _3D_BUTTON[4,350,2,60,10,1,"PLAY",3,0]
  1550.          _3D_BUTTON[1,140,2,60,10,0,"STOP",4,0]
  1551.          _PLAY_FLAG=0
  1552.          _UPDATE[SCORE_POS]
  1553.          MESSAGE[" End of score reached,no loop! "]
  1554.          Wait 50
  1555.          Screen 4
  1556.          Pop Proc
  1557.       End If 
  1558.       '
  1559.       If Mouse Key=1 and M=1 and _PAUSE_FLAG=0
  1560.          _3D_BUTTON[1,140,2,60,10,0,"STOP",4,0]
  1561.          _3D_BUTTON[4,350,2,60,10,1,"PLAY",3,0]
  1562.          _PLAY_FLAG=0
  1563.          _UPDATE[SCORE_POS]
  1564.          MESSAGE["     Stop playing score!       "]
  1565.          Wait 50
  1566.          Screen 4
  1567.          Pop Proc
  1568.       End If 
  1569.       '
  1570.       '
  1571.       RT1=Peek(SCORE_POS)
  1572.       RT2=Peek(SCORE_POS+1)
  1573.       RT3=Peek(SCORE_POS+2)
  1574.       RT4=Peek(SCORE_POS+3)
  1575.       '
  1576.       If RT1>0 and TRACK_1 : Sam Play %1000,RT1,10000+(_TUNE*160) : End If 
  1577.       If RT2>0 and TRACK_2 : Sam Play %100,RT2,10000+(_TUNE*160) : End If 
  1578.       If RT3>0 and TRACK_3 : Sam Play %10,RT3,10000+(_TUNE*160) : End If 
  1579.       If RT4>0 and TRACK_4 : Sam Play %1,RT4,10000+(_TUNE*160) : End If 
  1580.       '
  1581.       '
  1582.       If Mouse Key=1 and M=2 and _PLAY_FLAG=1
  1583.          Screen 4
  1584.          _PAUSE
  1585.          _UPDATE[SCORE_POS]
  1586.          Wait 20
  1587.       End If 
  1588.       '
  1589.       While _PAUSE_FLAG=1
  1590.          Screen 4
  1591.          If Mouse Key=1 and Mouse Zone=2
  1592.             _PAUSE
  1593.             _UPDATE[SCORE_POS]
  1594.             Wait 20
  1595.          End If 
  1596.       Wend 
  1597.       '
  1598.       DELAY=(51-_TEMPO)*400
  1599.       For _DELAY=0 To DELAY
  1600.       Next _DELAY
  1601.       '
  1602.       Add SCORE_POS,4
  1603.       Add POSITION,1
  1604.       '
  1605.       If _SCROLL_FLAG=1
  1606.          _UPDATE[SCORE_POS]
  1607.       End If 
  1608.       '
  1609.    Loop 
  1610.    '
  1611. End Proc
  1612. Procedure _GET_SAMPLE
  1613.    '
  1614.    '
  1615.    If Mouse Key=0
  1616.       MESSAGE[" Pick sample mode now active!  "]
  1617.    End If 
  1618.    '
  1619.    '
  1620.    X=X Screen(2,X Mouse)/32
  1621.    Y=Y Screen(2,Y Mouse+5)/16
  1622.    '
  1623.    If Mouse Key=1 and X<Length(2)/2 and Y>0
  1624.       Screen 2
  1625.       _3D_DISPLAY[0,11,639,15,1,3]
  1626.       '
  1627.       I=2
  1628.       For XP=0 To 640 Step 32
  1629.          If I<Length(2)/2+2
  1630.             Paste Icon XP,11,I
  1631.          End If 
  1632.          Inc I
  1633.       Next XP
  1634.       '
  1635.       Paste Icon X*32,Y*16-5,X+Length(2)/2+2
  1636.       _SAMPLE=X+1
  1637.       Sam Play %1000,_SAMPLE,10000+(_TUNE*160)
  1638.         Wait 20
  1639.    End If 
  1640.    '
  1641.    '
  1642. End Proc
  1643. Procedure MENU
  1644.    '
  1645.    Screen 4
  1646.    '
  1647.    M=Mouse Zone
  1648.    Volume 63
  1649.    '
  1650.    If Mouse Key=0
  1651.       MESSAGE["    Waiting for user input!    "]
  1652.    End If 
  1653.    '
  1654.    If Mouse Key=1 and M=3 and SCORE_POS>Start(8)+4 and _PLAY_FLAG=0
  1655.       _3D_BUTTON[3,280,2,60,10,0,"REW",4,0]
  1656.       Add SCORE_POS,-4
  1657.       Add POSITION,-1
  1658.       _UPDATE[SCORE_POS]
  1659.       Screen 4
  1660.       _3D_BUTTON[3,280,2,60,10,1,"REW",3,0]
  1661.       MESSAGE["      <<< Rewinding score      "]
  1662.    End If 
  1663.    '
  1664.    If Mouse Key=1 and M=4 and _PAUSE_FLAG=0 and SCORE_POS<Start(8)+Length(8)-79
  1665.       _PLAY_FLAG=1
  1666.       _3D_BUTTON[4,350,2,60,10,0,"PLAY",4,0]
  1667.       _3D_BUTTON[1,140,2,60,10,1,"STOP",3,0]
  1668.       MESSAGE["   > Score is now playing >    "]
  1669.       _PLAY[_TEMPO]
  1670.       Wait 20
  1671.    End If 
  1672.    '
  1673.    If Mouse Key=1 and M=5 and SCORE_POS<Start(8)+Length(8)-79 and _PLAY_FLAG=0
  1674.       _3D_BUTTON[5,420,2,60,10,0,"FRW",4,0]
  1675.       Add SCORE_POS,4
  1676.       Add POSITION,1
  1677.       _UPDATE[SCORE_POS]
  1678.       Screen 4
  1679.       _3D_BUTTON[5,420,2,60,10,1,"FRW",3,0]
  1680.       MESSAGE["     Forwarding score >>>      "]
  1681.    End If 
  1682.    '
  1683.    If Mouse Key=1 and M=6
  1684.       _TRACK_1
  1685.       Wait 20
  1686.    End If 
  1687.    '
  1688.    If Mouse Key=1 and M=7
  1689.       _TRACK_2
  1690.       Wait 20
  1691.    End If 
  1692.    '
  1693.    If Mouse Key=1 and M=8
  1694.       _TRACK_3
  1695.       Wait 20
  1696.    End If 
  1697.    '
  1698.    If Mouse Key=1 and M=9
  1699.       _TRACK_4
  1700.       Wait 20
  1701.    End If 
  1702.    '
  1703.    If Mouse Key=1 and M=10
  1704.       _HOR_SLIDER_TEMPO[10,106,31,60,8,0,4,3,_TEMPO,1]
  1705.       Poke(Start(8)),_TEMPO
  1706.       MESSAGE["    Adjusting score tempo!     "]
  1707.    End If 
  1708.    '
  1709.    '
  1710.    If Mouse Key=1 and M=12
  1711.       _TUNE[12,106,54,60,8,0,4,3,_TUNE,1]
  1712.       MESSAGE["     Tuning drum samples!      "]
  1713.    End If 
  1714.    '
  1715.    If Mouse Key=1 and M=14 and SCORE_POS>Start(8)+4 and _PLAY_FLAG=0 and _PAUSE_FLAG=0
  1716.       _3D_BUTTON[14,2,2,60,10,0,"START",4,0]
  1717.       SCORE_POS=Start(8)+4
  1718.       POSITION=0
  1719.       _UPDATE[SCORE_POS]
  1720.       MESSAGE[" Returning to start of score!  "]
  1721.       Screen 4
  1722.       Wait 30
  1723.       _3D_BUTTON[14,2,2,60,10,1,"START",3,0]
  1724.    End If 
  1725.    '
  1726.    If Mouse Key=1 and M=15 and SCORE_POS<Start(8)+Length(8)-79 and _PLAY_FLAG=0 and _PAUSE_FLAG=0
  1727.       _3D_BUTTON[15,71,2,60,10,0,"END",4,0]
  1728.       SCORE_POS=Start(8)+(Length(8)-76)
  1729.       POSITION=(Length(8)-77)/4
  1730.       _UPDATE[SCORE_POS]
  1731.       MESSAGE["  Jump to the end of score!   "]
  1732.       Wait 30
  1733.       Screen 4
  1734.       _3D_BUTTON[15,71,2,60,10,1,"END",3,0]
  1735.    End If 
  1736.    '
  1737.    If Mouse Key=1 and M=16
  1738.       _3D_BUTTON[16,488,2,45,10,0,"SWAP",4,0]
  1739.       MESSAGE[" Swap a sample in the score!  "]
  1740.       _SWAP
  1741.       Screen 4
  1742.       _3D_BUTTON[16,488,2,45,10,1,"SWAP",3,0]
  1743.       Wait 50
  1744.    End If 
  1745.    '
  1746.    If Mouse Key=1 and M=17
  1747.       _LOOP
  1748.       Wait 50
  1749.    End If 
  1750.    '
  1751.    If Mouse Key=1 and M=18
  1752.       _3D_BUTTON[18,174,18,60,10,0,"CUT",4,0]
  1753.       '
  1754.       MESSAGE[" Cut a block from the score!  "]
  1755.       _CUT
  1756.       Screen 4
  1757.       _3D_BUTTON[18,174,18,60,10,1,"CUT",3,0]
  1758.       Wait 50
  1759.    End If 
  1760.    '
  1761.    If Mouse Key=1 and M=19
  1762.       _3D_BUTTON[19,244,18,60,10,0,"COPY",4,0]
  1763.       MESSAGE[" Copy a block from the score! "]
  1764.       _COPY
  1765.       Screen 4
  1766.       _3D_BUTTON[19,244,18,60,10,1,"COPY",3,0]
  1767.       Wait 50
  1768.    End If 
  1769.    '
  1770.    If Mouse Key=1 and M=20 and Length(9)>0
  1771.       _3D_BUTTON[20,314,18,60,10,0,"PASTE",4,0]
  1772.       MESSAGE["Paste a block from the buffer!"]
  1773.       _PASTE
  1774.       Screen 4
  1775.       _3D_BUTTON[20,314,18,60,10,1,"PASTE",3,0]
  1776.       Wait 50
  1777.    End If 
  1778.    '
  1779.    If Mouse Key=1 and M=21
  1780.       _3D_BUTTON[21,384,18,60,10,0,"C BLOCK",4,0]
  1781.       MESSAGE["Clear a block from the score! "]
  1782.       _CLEAR_BLOCK
  1783.       Screen 4
  1784.       _3D_BUTTON[21,384,18,60,10,1,"C BLOCK",3,0]
  1785.       Wait 50
  1786.    End If 
  1787.    '
  1788.    If Mouse Key=1 and M=22
  1789.       _3D_BUTTON[22,454,18,60,10,0,"C SCORE",4,0]
  1790.       MESSAGE["    Clear the whole score!    "]
  1791.       _CLEAR_SCORE
  1792.       Screen 4
  1793.       _3D_BUTTON[22,454,18,60,10,1,"C SCORE",3,0]
  1794.       Wait 50
  1795.    End If 
  1796.    '
  1797.    If Mouse Key=1 and M=23
  1798.       _3D_BUTTON[23,174,34,60,10,0,"L KIT",4,0]
  1799.       MESSAGE["Load a new drum kit from disk!"]
  1800.       _LOAD_KIT
  1801.       Screen 4
  1802.       _3D_BUTTON[23,174,34,60,10,1,"L KIT",3,0]
  1803.       Wait 50
  1804.    End If 
  1805.    '
  1806.    If Mouse Key=1 and M=24
  1807.       _3D_BUTTON[24,174,50,60,10,0,"ADD",4,0]
  1808.       MESSAGE["  Add to the score length!   "]
  1809.       _ADD[4]
  1810.       Wait 20
  1811.       Screen 4
  1812.       _3D_BUTTON[24,174,50,60,10,1,"ADD",3,0]
  1813.       Screen 0
  1814.       _3D_METER[30,85,240,10,Length(8)/72,6,4]
  1815.       Screen 4
  1816.    End If 
  1817.    '
  1818.    If Mouse Key=2 and M=24
  1819.       _3D_BUTTON[24,174,50,60,10,0,"ADD",4,0]
  1820.       MESSAGE["  Add to the score length!   "]
  1821.       _ADD[72]
  1822.       Wait 20
  1823.       Screen 4
  1824.       _3D_BUTTON[24,174,50,60,10,1,"ADD",3,0]
  1825.       Screen 0
  1826.       _3D_METER[30,85,240,10,Length(8)/72,6,4]
  1827.       Screen 4
  1828.    End If 
  1829.    '
  1830.    If Mouse Key=1 and M=25
  1831.       _3D_BUTTON[25,244,34,60,10,0,"L SCORE",4,0]
  1832.       MESSAGE[" Load a score from the disk! "]
  1833.       _LOAD_SCORE
  1834.       Screen 4
  1835.       _3D_BUTTON[25,244,34,60,10,1,"L SCORE",3,0]
  1836.       Wait 50
  1837.    End If 
  1838.    '
  1839.    If Mouse Key=1 and M=26
  1840.       _3D_BUTTON[26,244,50,60,10,0,"S SCORE",4,0]
  1841.       MESSAGE["  Save a score to the disk!  "]
  1842.       _SAVE_SCORE
  1843.       Screen 4
  1844.       _3D_BUTTON[26,244,50,60,10,1,"S SCORE",3,0]
  1845.       Wait 50
  1846.    End If 
  1847.    '
  1848.    '
  1849.    If Mouse Key=1 and M=27
  1850.       _3D_BUTTON[27,314,34,60,10,0,"L MOD",4,0]
  1851.       MESSAGE["   Load a module from disk!  "]
  1852.       _LOAD_MODULE
  1853.       Screen 4
  1854.       _3D_BUTTON[27,314,34,60,10,1,"L MOD",3,0]
  1855.       Wait 50
  1856.    End If 
  1857.    '
  1858.    If Mouse Key=1 and M=28
  1859.       _3D_BUTTON[28,314,50,60,10,0,"S MOD",4,0]
  1860.       MESSAGE["   Save a module to disk!    "]
  1861.       _SAVE_MODULE
  1862.       Screen 4
  1863.       _3D_BUTTON[28,314,50,60,10,1,"S MOD",3,0]
  1864.       Wait 50
  1865.    End If 
  1866.    '
  1867.    If Mouse Key=1 and M=29
  1868.       _3D_BUTTON[29,384,34,60,10,0,"L CUT",4,0]
  1869.       MESSAGE["    Load a cut from disk!    "]
  1870.       _LOAD_BUFFER
  1871.       Screen 4
  1872.       _3D_BUTTON[29,384,34,60,10,1,"L CUT",3,0]
  1873.       Wait 50
  1874.    End If 
  1875.    '
  1876.    If Mouse Key=1 and M=30 and Length(9)>0
  1877.       _3D_BUTTON[30,384,50,60,10,0,"S CUT",4,0]
  1878.       MESSAGE["      Save cut to disk!      "]
  1879.       _SAVE_BUFFER
  1880.       Screen 4
  1881.       _3D_BUTTON[30,384,50,60,10,1,"S CUT",3,0]
  1882.       Wait 50
  1883.    End If 
  1884.    '
  1885.    If Mouse Key=1 and M=31
  1886.       _3D_BUTTON[31,454,34,60,10,0,"PADS",4,0]
  1887.       Wait 10
  1888.       _JAM
  1889.       Screen 4
  1890.       _3D_BUTTON[31,454,34,60,10,1,"PADS",3,0]
  1891.       Wait 30
  1892.    End If 
  1893.    '
  1894.    If Mouse Key=1 and M=32
  1895.       _SCROLL
  1896.       Wait 30
  1897.       Screen 4
  1898.    End If 
  1899.    '
  1900.    If Mouse Key=1 and M=33
  1901.       _FILTER
  1902.       Wait 30
  1903.    End If 
  1904.    '
  1905.    '
  1906.    If Mouse Key=1 and M=34
  1907.       _VOL_1[34,35,20,60,8,0,4,3,_V_1,1]
  1908.       MESSAGE[" Adjusting track one's volume! "]
  1909.    End If 
  1910.    '
  1911.    If Mouse Key=1 and M=35
  1912.       _VOL_2[35,35,31,60,8,0,4,3,_V_2,1]
  1913.       MESSAGE[" Adjusting track two's volume! "]
  1914.    End If 
  1915.    '
  1916.    If Mouse Key=1 and M=36
  1917.       _VOL_3[36,35,42,60,8,0,4,3,_V_3,1]
  1918.       MESSAGE["Adjusting track three's volume!"]
  1919.    End If 
  1920.    '
  1921.    If Mouse Key=1 and M=37
  1922.       _VOL_4[37,35,53,60,8,0,4,3,_V_4,1]
  1923.       MESSAGE[" Adjusting track four's volume!"]
  1924.    End If 
  1925.    '
  1926.    If Mouse Key=1 and M>37 and M<43
  1927.       _MEMORY_BUTTONS
  1928.    End If 
  1929.    '
  1930.    If Mouse Key=1 and M=43
  1931.       _STORE
  1932.    End If 
  1933.    '
  1934.    If Mouse Key=1 and M=44
  1935.       _GOTO
  1936.    End If 
  1937.    '
  1938.    If Mouse Key=1 and M=45
  1939.       _LAST
  1940.    End If 
  1941.    '
  1942. End Proc
  1943. Procedure _EDIT
  1944.    '
  1945.    '
  1946.    If Mouse Key=0
  1947.       MESSAGE["   Editing mode now active!    "]
  1948.    End If 
  1949.    '
  1950.    _UPDATE[SCORE_POS]
  1951.    '
  1952.    X=X Screen(3,X Mouse)/32-1
  1953.    Y=Y Screen(3,Y Mouse)/16-1
  1954.    '
  1955.    PLACE=SCORE_POS+(Y)+(X*4)
  1956.    '
  1957.    If Mouse Key=1 and X>-1 and X<18 and Y>-1 and Y<4 and PLACE<Start(8)+Length(8)-76
  1958.       Sam Play %1000,_SAMPLE,10000+(_TUNE*160)
  1959.       Poke(PLACE),_SAMPLE
  1960.       _UPDATE[SCORE_POS]
  1961.       LAST_EDITED=SCORE_POS
  1962.       LAST_POS=POSITION
  1963.       Wait 10
  1964.    End If 
  1965.    '
  1966.    PLACE=SCORE_POS+(Y)+(X*4)
  1967.    '
  1968.    If Mouse Key=2 and X>-1 and X<18 and Y>-1 and Y<4 and PLACE<Start(8)+Length(8)-76
  1969.       If Peek(PLACE)>0
  1970.          Sam Play %1000,Peek(PLACE),10000+(_TUNE*160)
  1971.       End If 
  1972.       Poke(PLACE),0
  1973.       _UPDATE[SCORE_POS]
  1974.       LAST_EDITED=SCORE_POS
  1975.       LAST_POS=POSITION
  1976.       Wait 10
  1977.    End If 
  1978.    '
  1979. End Proc
  1980. Procedure DUMMY
  1981. End Proc
  1982. Procedure _PAUSE
  1983.    '
  1984.    _PAUSE_FLAG=1-_PAUSE_FLAG
  1985.    '
  1986.    If _PAUSE_FLAG=0
  1987.        _3D_BUTTON[2,210,2,60,10,1,"PAUSE",3,0]
  1988.          MESSAGE["   > Score is now playing >    "]
  1989.    End If 
  1990.    '
  1991.    If _PAUSE_FLAG=1
  1992.       _3D_BUTTON[2,210,2,60,10,0,"PAUSE",4,0]
  1993.          MESSAGE["      Pause now active!        "]
  1994.    End If 
  1995.    '
  1996. End Proc
  1997. Procedure _CENTRE_TEXT[Y,TEX$]
  1998.    '
  1999.    LE=Text Length(TEX$)/2
  2000.    '
  2001.   Ink 3,3
  2002.    Bar 1,Y-6 To 635,Y+1
  2003.    Ink 0,3
  2004.    '
  2005.    Text 320-LE,Y,TEX$
  2006.    '
  2007. End Proc
  2008. Procedure _CENTRE_TEXT2[Y,TEX$]
  2009.    '
  2010.    LE=Text Length(TEX$)/2
  2011.    '
  2012.    Ink 0,3
  2013.    '
  2014.    Text 320-LE,Y,TEX$
  2015.    '
  2016. End Proc
  2017. Procedure MESSAGE[TEX$]
  2018.    '
  2019.    Screen 4
  2020.    '
  2021.    LE=Text Length(TEX$)/2
  2022.    Ink 1,4
  2023.    Text 320-LE,77,TEX$
  2024.    
  2025.    '
  2026. End Proc
  2027. Procedure _ZEROS[NUMBER]
  2028.    '
  2029.    NUMBER$=Str$(NUMBER)
  2030.    NUMBER$=Mid$(NUMBER$,2)
  2031.    NUMBER$=Right$("000000"+NUMBER$,6)
  2032.    '
  2033. End Proc
  2034. Procedure _TRACK_1
  2035.    '
  2036.    TRACK_1=1-TRACK_1
  2037.    '
  2038.    If TRACK_1=0
  2039.       _3D_BUTTON[6,20,19,10,10,1,"X",3,0]
  2040.       MESSAGE["  Track one is now inactive!   "]
  2041.       Wait 30
  2042.    End If 
  2043.    '
  2044.    If TRACK_1=1
  2045.       _3D_BUTTON[6,20,19,10,10,0,"",4,0]
  2046.       MESSAGE["   Track one is now active!    "]
  2047.       Wait 30
  2048.    End If 
  2049.    '
  2050.    _UPDATE[SCORE_POS]
  2051.    '
  2052. End Proc
  2053. Procedure _TRACK_2
  2054.    '
  2055.    TRACK_2=1-TRACK_2
  2056.    '
  2057.    If TRACK_2=0
  2058.    _3D_BUTTON[7,20,30,10,10,1,"X",3,0]
  2059.       MESSAGE["  Track two is now inactive!   "]
  2060.       Wait 30
  2061.    End If 
  2062.    '
  2063.    If TRACK_2=1
  2064.    _3D_BUTTON[7,20,30,10,10,0,"",4,0]
  2065.       MESSAGE["   Track two is now active!    "]
  2066.       Wait 30
  2067.    End If 
  2068.    '
  2069.    _UPDATE[SCORE_POS]
  2070.    '
  2071. End Proc
  2072. Procedure _TRACK_3
  2073.    '
  2074.    TRACK_3=1-TRACK_3
  2075.    '
  2076.    If TRACK_3=0
  2077.    _3D_BUTTON[8,20,41,10,10,1,"X",3,0]
  2078.       MESSAGE[" Track three is now inactive!  "]
  2079.       Wait 30
  2080.    End If 
  2081.    '
  2082.    If TRACK_3=1
  2083.    _3D_BUTTON[8,20,41,10,10,0,"",4,0]
  2084.       MESSAGE["  Track three is now active!   "]
  2085.       Wait 30
  2086.    End If 
  2087.    '
  2088.    _UPDATE[SCORE_POS]
  2089.    '
  2090. End Proc
  2091. Procedure _TRACK_4
  2092.    '
  2093.    TRACK_4=1-TRACK_4
  2094.    '
  2095.    If TRACK_4=0
  2096.    _3D_BUTTON[9,20,52,10,10,1,"X",3,0]
  2097.       MESSAGE["  Track four is now inactive!  "]
  2098.       Wait 30
  2099.    End If 
  2100.    '
  2101.    If TRACK_4=1
  2102.    _3D_BUTTON[9,20,52,10,10,0,"",4,0]
  2103.       MESSAGE["   Track four is now active!   "]
  2104.       Wait 30
  2105.    End If 
  2106.    '
  2107.    _UPDATE[SCORE_POS]
  2108.    '
  2109. End Proc
  2110. Procedure _LOOP
  2111.    '
  2112.    _LOOP_FLAG=1-_LOOP_FLAG
  2113.    '
  2114.    If _LOOP_FLAG=0
  2115.       _3D_BUTTON[17,541,2,45,10,1,"LOOP",3,0]
  2116.        MESSAGE["Score looping is now inactive! "]
  2117.    End If 
  2118.    '
  2119.    If _LOOP_FLAG=1
  2120.       _3D_BUTTON[17,541,2,45,10,0,"ON",4,0]
  2121.        MESSAGE[" Score looping is now active!  "]
  2122.    End If 
  2123.    '
  2124.    Poke(Start(8)+2),_LOOP_FLAG
  2125.    '
  2126. End Proc
  2127. Procedure _FILTER
  2128.    '
  2129.    _FILTER_FLAG=1-_FILTER_FLAG
  2130.    '
  2131.    If _FILTER_FLAG=0
  2132.       _3D_BUTTON[33,593,2,45,10,1,"FILT",3,0]
  2133.       Led On 
  2134.       MESSAGE["    Filter is now inactive!    "]
  2135.    End If 
  2136.    '
  2137.    If _FILTER_FLAG=1
  2138.       _3D_BUTTON[33,593,2,45,10,0,"ON",4,0]
  2139.       Led Off 
  2140.       MESSAGE["     Filter is now active!     "]
  2141.    End If 
  2142.    '
  2143. End Proc
  2144. Procedure _CUT
  2145.    '
  2146.    Screen 3
  2147.    '
  2148.    '********************************* 
  2149.    '      GET START OF BLOCK
  2150.    '********************************* 
  2151.    '
  2152.    Repeat 
  2153.       X=X Screen(3,X Mouse)/32-1
  2154.       YI=Y Screen(3,Y Mouse)/16-1
  2155.       Y=1
  2156.       PLACE=SCORE_POS+(Y)+(X*4)
  2157.       STORE_X1=PLACE-1
  2158.       X1=X
  2159.       Y1=Y
  2160.    Until Mouse Click=1 and X>-1 and X<18 and YI>-1 and YI<4
  2161.    '
  2162.    '
  2163.    If PLACE>Start(8)+Length(8)-76
  2164.       Pop Proc
  2165.    End If 
  2166.    '
  2167.    '********************************* 
  2168.    '       GET END OF BLOCK 
  2169.    '********************************* 
  2170.    '
  2171.    Screen 0
  2172.    Get Block 2,0,15,640,65
  2173.    Ink 6,0
  2174.    Set Pattern 2
  2175.    Gr Writing 0
  2176.    '
  2177.    Repeat 
  2178.       '
  2179.       X=X Screen(3,X Mouse)/32-1
  2180.       YI=Y Screen(3,Y Mouse)/16-1
  2181.       Y=4
  2182.       PLACE=SCORE_POS+(Y)+(X*4)
  2183.       If X>X1-1 and X<18 and PLACE<Start(8)+Length(8)-72
  2184.          STORE_X2=PLACE-1
  2185.          '
  2186.          If TRACK_1=1
  2187.             Bar X1*32+32,Y1*16 To X*32+64,Y1*16+14
  2188.          End If 
  2189.          '
  2190.          If TRACK_2=1
  2191.             Bar X1*32+32,Y1*16+16 To X*32+64,Y1*16+30
  2192.          End If 
  2193.          '
  2194.          If TRACK_3=1
  2195.             Bar X1*32+32,Y1*16+32 To X*32+64,Y1*16+46
  2196.          End If 
  2197.          '
  2198.          If TRACK_4=1
  2199.             Bar X1*32+32,Y1*16+48 To X*32+64,Y1*16+62
  2200.          End If 
  2201.          '' 
  2202.          Screen Copy 0,30,15,610,100 To Logic(3),30,15
  2203.          '
  2204.          Put Block 2
  2205.          '
  2206.          
  2207.          Screen Swap 
  2208.          Wait Vbl 
  2209.       End If 
  2210.    Until Mouse Click=1 and X>-1 and X<18 and YI>-1 and YI<4
  2211.    '
  2212.    Gr Writing 1
  2213.    Set Pattern 0
  2214.    Screen 4
  2215.    '
  2216.    Get Block 1,0,0,640,119
  2217.    '  
  2218.    _DARKEN[4,0,0,640,119]
  2219.    '
  2220.    _3D_DISPLAY[200,20,240,42,1,6]
  2221.    _3D_DISPLAY[205,22,230,10,0,3]
  2222.    _3D_DISPLAY[205,34,230,26,0,3]
  2223.    '
  2224.    _CENTRE_TEXT2[30,"CUT BLOCK?"]
  2225.    '
  2226.    _3D_BUTTON[40,220,43,60,10,1,"YES",3,0]
  2227.    _3D_BUTTON[41,360,43,60,10,1,"NO",3,0]
  2228.    '
  2229.    Do 
  2230.       '
  2231.       M=Mouse Zone
  2232.       '
  2233.       If Mouse Key=1 and M=41
  2234.          _3D_BUTTON[41,360,43,60,10,0,"NO",4,0]
  2235.          Wait 10
  2236.          _UPDATE[SCORE_POS]
  2237.          Screen 4
  2238.          Put Block 1
  2239.          Del Block 1
  2240.          Pop Proc
  2241.       End If 
  2242.       '
  2243.       If Mouse Key=1 and M=40
  2244.          _3D_BUTTON[40,220,43,60,10,0,"YES",4,0]
  2245.          Wait 10
  2246.          '
  2247.          '************************************* 
  2248.          'RESERVE BUFFER (LENGTH OF BLOCK ONLY) 
  2249.          '************************************* 
  2250.          '
  2251.          _BUFFER_LENGTH=0
  2252.          '
  2253.          For COUNT=STORE_X1 To STORE_X2
  2254.             Inc _BUFFER_LENGTH
  2255.          Next COUNT
  2256.          '
  2257.          Reserve As Chip Work 9,_BUFFER_LENGTH
  2258.          '
  2259.          EXTRA=0
  2260.          '
  2261.          For POS=Start(9) To Start(9)+_BUFFER_LENGTH
  2262.             Poke(POS),Peek(STORE_X1+EXTRA)
  2263.             Inc EXTRA
  2264.          Next POS
  2265.          '
  2266.          If TRACK_1=1
  2267.             '
  2268.             For POS=STORE_X1 To STORE_X2-3 Step 4
  2269.                Poke(POS),0
  2270.             Next POS
  2271.             '
  2272.          End If 
  2273.          '
  2274.          If TRACK_2=1
  2275.             '
  2276.             For POS=STORE_X1+1 To STORE_X2-2 Step 4
  2277.                Poke(POS),0
  2278.             Next POS
  2279.             '
  2280.          End If 
  2281.          '    
  2282.          '
  2283.          If TRACK_3=1
  2284.             '
  2285.             For POS=STORE_X1+2 To STORE_X2-1 Step 4
  2286.                Poke(POS),0
  2287.             Next POS
  2288.             '
  2289.          End If 
  2290.          '
  2291.          If TRACK_4=1
  2292.             '
  2293.             For POS=STORE_X1+3 To STORE_X2 Step 4
  2294.                Poke(POS),0
  2295.             Next POS
  2296.             '
  2297.          End If 
  2298.          '    
  2299.          '    
  2300.          '    
  2301.          _UPDATE[SCORE_POS]
  2302.          '
  2303.          Screen 4
  2304.          Put Block 1
  2305.          Wait 5
  2306.          Del Block 1
  2307.          Del Block 2
  2308.          Pop Proc
  2309.       End If 
  2310.       '
  2311.    Loop 
  2312.    '
  2313. End Proc
  2314. Procedure _COPY
  2315.    '
  2316.    Screen 3
  2317.    '
  2318.    '********************************* 
  2319.    '      GET START OF BLOCK
  2320.    '********************************* 
  2321.    '
  2322.    Repeat 
  2323.       X=X Screen(3,X Mouse)/32-1
  2324.       YI=Y Screen(3,Y Mouse)/16-1
  2325.       Y=1
  2326.       PLACE=SCORE_POS+(Y)+(X*4)
  2327.       STORE_X1=PLACE-1
  2328.       X1=X
  2329.       Y1=Y
  2330.    Until Mouse Click=1 and X>-1 and X<18 and YI>-1 and YI<4
  2331.    '
  2332.    If PLACE>Start(8)+Length(8)-76
  2333.       Pop Proc
  2334.    End If 
  2335.    '
  2336.    '********************************* 
  2337.    '       GET END OF BLOCK 
  2338.    '********************************* 
  2339.    '
  2340.    Screen 0
  2341.    Get Block 1,0,15,640,65
  2342.    Ink 5,0
  2343.    Set Pattern 2
  2344.    Gr Writing 0
  2345.    Repeat 
  2346.       '
  2347.       X=X Screen(3,X Mouse)/32-1
  2348.       YI=Y Screen(3,Y Mouse)/16-1
  2349.       Y=4
  2350.       PLACE=SCORE_POS+(Y)+(X*4)
  2351.       If X>X1-1 and X<18 and PLACE<Start(8)+Length(8)-72
  2352.          STORE_X2=PLACE-1
  2353.          '
  2354.          If TRACK_1=1
  2355.             Bar X1*32+32,Y1*16 To X*32+64,Y1*16+14
  2356.          End If 
  2357.          '
  2358.          If TRACK_2=1
  2359.             Bar X1*32+32,Y1*16+16 To X*32+64,Y1*16+30
  2360.          End If 
  2361.          '
  2362.          If TRACK_3=1
  2363.             Bar X1*32+32,Y1*16+32 To X*32+64,Y1*16+46
  2364.          End If 
  2365.          '
  2366.          If TRACK_4=1
  2367.             Bar X1*32+32,Y1*16+48 To X*32+64,Y1*16+62
  2368.          End If 
  2369.          '' 
  2370.          Screen Copy 0,30,15,610,100 To Logic(3),30,15
  2371.          '
  2372.          Put Block 1
  2373.          '
  2374.          Screen Swap 
  2375.          Wait Vbl 
  2376.       End If 
  2377.    Until Mouse Click=1 and X>-1 and X<18 and YI>-1 and YI<4
  2378.    '
  2379.    Gr Writing 1
  2380.    Set Pattern 0
  2381.    Screen 4
  2382.    '
  2383.    '************************************* 
  2384.    'RESERVE BUFFER (LENGTH OF BLOCK ONLY) 
  2385.    '************************************* 
  2386.    '
  2387.    _BUFFER_LENGTH=0
  2388.    '
  2389.    For COUNT=STORE_X1 To STORE_X2
  2390.       Inc _BUFFER_LENGTH
  2391.    Next COUNT
  2392.    '
  2393.    Reserve As Chip Work 9,_BUFFER_LENGTH
  2394.    '
  2395.    '************************************* 
  2396.    '      COPY BLOCK INTO BUFFER  
  2397.    '************************************* 
  2398.    '
  2399.    EXTRA=0
  2400.    '
  2401.    For POS=Start(9) To Start(9)+_BUFFER_LENGTH
  2402.       Poke(POS),Peek(STORE_X1+EXTRA)
  2403.       Inc EXTRA
  2404.    Next POS
  2405.    '    
  2406.    _UPDATE[SCORE_POS]
  2407.    Del Block 1
  2408.    '
  2409. End Proc
  2410. Procedure _PASTE
  2411.    '
  2412.    '********************************* 
  2413.    '      GET START OF BLOCK
  2414.    '********************************* 
  2415.    '
  2416.    Repeat 
  2417.       X=X Screen(3,X Mouse)/32-1
  2418.       YI=Y Screen(3,Y Mouse)/16-1
  2419.       Y=1
  2420.       PLACE=SCORE_POS+(Y)+(X*4)
  2421.       STORE_X1=PLACE-1
  2422.    Until Mouse Click=1 and X>-1 and X<18 and YI>-1 and YI<4
  2423.    '
  2424.    '************************************* 
  2425.    '      COPY BLOCK FROM BUFFER  
  2426.    '************************************* 
  2427.    '
  2428.    EXTRA=0
  2429.    '
  2430.    If TRACK_1=1
  2431.       For POS=STORE_X1 To STORE_X1+Length(9)-4 Step 4
  2432.          If POS<Start(8)+Length(8)-76
  2433.             Poke(POS),Peek(Start(9)+EXTRA)
  2434.             Add EXTRA,4
  2435.          End If 
  2436.       Next POS
  2437.    End If 
  2438.    '
  2439.    EXTRA=1
  2440.    '
  2441.    If TRACK_2=1
  2442.       For POS=STORE_X1+1 To STORE_X1+Length(9)-3 Step 4
  2443.          If POS<Start(8)+Length(8)-76
  2444.             Poke(POS),Peek(Start(9)+EXTRA)
  2445.             Add EXTRA,4
  2446.          End If 
  2447.       Next POS
  2448.    End If 
  2449.    '    
  2450.    '
  2451.    EXTRA=2
  2452.    '
  2453.    If TRACK_3=1
  2454.       For POS=STORE_X1+2 To STORE_X1+Length(9)-2 Step 4
  2455.          If POS<Start(8)+Length(8)-76
  2456.             Poke(POS),Peek(Start(9)+EXTRA)
  2457.             Add EXTRA,4
  2458.          End If 
  2459.       Next POS
  2460.    End If 
  2461.    '
  2462.    EXTRA=3
  2463.    '
  2464.    If TRACK_4=1
  2465.       For POS=STORE_X1+3 To STORE_X1+Length(9)-1 Step 4
  2466.          If POS<Start(8)+Length(8)-76
  2467.             Poke(POS),Peek(Start(9)+EXTRA)
  2468.             Add EXTRA,4
  2469.          End If 
  2470.       Next POS
  2471.    End If 
  2472.    '    
  2473.    '    
  2474.    _UPDATE[SCORE_POS]
  2475.    '
  2476. End Proc
  2477. Procedure _CLEAR_BLOCK
  2478.    '
  2479.    Screen 3
  2480.    '
  2481.    '********************************* 
  2482.    '      GET START OF BLOCK
  2483.    '********************************* 
  2484.    '
  2485.    Repeat 
  2486.       X=X Screen(3,X Mouse)/32-1
  2487.       YI=Y Screen(3,Y Mouse)/16-1
  2488.       Y=1
  2489.       PLACE=SCORE_POS+(Y)+(X*4)
  2490.       STORE_X1=PLACE-1
  2491.       X1=X
  2492.       Y1=Y
  2493.    Until Mouse Click=1 and X>-1 and X<18 and YI>-1 and YI<4
  2494.    '
  2495.    If PLACE>Start(8)+Length(8)-76
  2496.       Pop Proc
  2497.    End If 
  2498.    '
  2499.    '********************************* 
  2500.    '       GET END OF BLOCK 
  2501.    '********************************* 
  2502.    Screen 0
  2503.    Get Block 1,0,15,640,65
  2504.    Ink 6,0
  2505.    Set Pattern 2
  2506.    Gr Writing 0
  2507.    '
  2508.    Repeat 
  2509.       '
  2510.       X=X Screen(3,X Mouse)/32-1
  2511.       YI=Y Screen(3,Y Mouse)/16-1
  2512.       Y=4
  2513.       PLACE=SCORE_POS+(Y)+(X*4)
  2514.       If X>X1-1 and X<18 and PLACE<Start(8)+Length(8)-72
  2515.          STORE_X2=PLACE-1
  2516.          '
  2517.          If TRACK_1=1
  2518.             Bar X1*32+32,Y1*16 To X*32+64,Y1*16+14
  2519.          End If 
  2520.          '
  2521.          If TRACK_2=1
  2522.             Bar X1*32+32,Y1*16+16 To X*32+64,Y1*16+30
  2523.          End If 
  2524.          '
  2525.          If TRACK_3=1
  2526.             Bar X1*32+32,Y1*16+32 To X*32+64,Y1*16+46
  2527.          End If 
  2528.          '
  2529.          If TRACK_4=1
  2530.             Bar X1*32+32,Y1*16+48 To X*32+64,Y1*16+62
  2531.          End If 
  2532.          '' 
  2533.          Screen Copy 0,30,15,610,100 To Logic(3),30,15
  2534.          '
  2535.          Put Block 1
  2536.          '
  2537.          Screen Swap 
  2538.          Wait Vbl 
  2539.       End If 
  2540.    Until Mouse Click=1 and X>-1 and X<18 and YI>-1 and YI<4
  2541.    '
  2542.    Gr Writing 1
  2543.    Set Pattern 0
  2544.    Screen 4
  2545.    '
  2546.    '
  2547.    Get Block 2,0,0,640,119
  2548.    '
  2549.    _DARKEN[4,0,0,640,119]
  2550.    '  
  2551.    _3D_DISPLAY[200,20,240,42,1,6]
  2552.    _3D_DISPLAY[205,22,230,10,0,3]
  2553.    _3D_DISPLAY[205,34,230,26,0,3]
  2554.    '
  2555.    _CENTRE_TEXT2[30,"CLEAR BLOCK?"]
  2556.    '
  2557.    _3D_BUTTON[40,220,43,60,10,1,"YES",3,0]
  2558.    _3D_BUTTON[41,360,43,60,10,1,"NO",3,0]
  2559.    '
  2560.    Do 
  2561.       '
  2562.       M=Mouse Zone
  2563.       '
  2564.       If Mouse Key=1 and M=41
  2565.          _3D_BUTTON[41,360,43,60,10,0,"NO",4,0]
  2566.          Wait 10
  2567.          _UPDATE[SCORE_POS]
  2568.          Screen 4
  2569.          Put Block 2
  2570.          Del Block 2
  2571.          Pop Proc
  2572.       End If 
  2573.       '
  2574.       If Mouse Key=1 and M=40
  2575.          _3D_BUTTON[40,220,43,60,10,0,"YES",4,0]
  2576.          Wait 10
  2577.          '
  2578.          If TRACK_1=1
  2579.             '
  2580.             For POS=STORE_X1 To STORE_X2-3 Step 4
  2581.                Poke(POS),0
  2582.             Next POS
  2583.             '
  2584.          End If 
  2585.          '    
  2586.          '
  2587.          If TRACK_2=1
  2588.             '
  2589.             For POS=STORE_X1+1 To STORE_X2-2 Step 4
  2590.                Poke(POS),0
  2591.             Next POS
  2592.             '
  2593.          End If 
  2594.          '    
  2595.          '
  2596.          If TRACK_3=1
  2597.             '
  2598.             For POS=STORE_X1+2 To STORE_X2-1 Step 4
  2599.                Poke(POS),0
  2600.             Next POS
  2601.             '
  2602.          End If 
  2603.          '
  2604.          If TRACK_4=1
  2605.             '
  2606.             For POS=STORE_X1+3 To STORE_X2 Step 4
  2607.                Poke(POS),0
  2608.             Next POS
  2609.             '
  2610.          End If 
  2611.          '    
  2612.          '    
  2613.          _UPDATE[SCORE_POS]
  2614.          Del Block 1
  2615.          Screen 4
  2616.          Put Block 2
  2617.          Wait 5
  2618.          Del Block 2
  2619.          Pop Proc
  2620.       End If 
  2621.       '
  2622.    Loop 
  2623. End Proc
  2624. Procedure _CLEAR_SCORE
  2625.    '    
  2626.    Screen 4
  2627.    '
  2628.    Get Block 1,0,0,640,119
  2629.    '
  2630.    _DARKEN[4,0,0,640,119]
  2631.    '  
  2632.    _3D_DISPLAY[200,20,240,42,1,6]
  2633.    _3D_DISPLAY[205,22,230,10,0,3]
  2634.    _3D_DISPLAY[205,34,230,26,0,3]
  2635.    '
  2636.    _CENTRE_TEXT2[30,"CLEAR SCORE?"]
  2637.    '
  2638.    _3D_BUTTON[40,220,43,60,10,1,"YES",3,0]
  2639.    _3D_BUTTON[41,360,43,60,10,1,"NO",3,0]
  2640.    '
  2641.    Do 
  2642.       '
  2643.       M=Mouse Zone
  2644.       '
  2645.       If Mouse Key=1 and M=41
  2646.          _3D_BUTTON[41,360,43,60,10,0,"NO",4,0]
  2647.          Wait 10
  2648.          Put Block 1
  2649.          Del Block 1
  2650.          Pop Proc
  2651.       End If 
  2652.       '
  2653.       If Mouse Key=1 and M=40
  2654.          _3D_BUTTON[40,220,43,60,10,0,"YES",4,0]
  2655.          Wait 10
  2656.          Screen 0
  2657.          '  
  2658.          _CENTRE_TEXT[10,"SCORE:"+FILE$]
  2659.          Wait Vbl 
  2660.          '
  2661.          Reserve As Chip Work 8,152
  2662.          Poke(Start(8)),_TEMPO
  2663.          Poke(Start(8)+1),_VOLUME
  2664.          Poke(Start(8)+2),_LOOP_FLAG
  2665.          SCORE_POS=Start(8)+4
  2666.          POSITION=0
  2667.          MEM_1=SCORE_POS
  2668.          MEM_2=SCORE_POS
  2669.          MEM_3=SCORE_POS
  2670.          MEM_4=SCORE_POS
  2671.          MEM_5=SCORE_POS
  2672.          MEM_1_1=0
  2673.          MEM_2_2=0
  2674.          MEM_3_3=0
  2675.          MEM_4_4=0
  2676.          MEM_5_5=0
  2677.          LAST_EDITED=SCORE_POS
  2678.          LAST_POS=0
  2679.          '
  2680.          Screen 0
  2681.          _3D_METER[30,85,240,10,Length(8)/72,6,4]
  2682.          Screen 4
  2683.          '
  2684.          _UPDATE[SCORE_POS]
  2685.          Screen 4
  2686.          Put Block 1
  2687.          Del Block 1
  2688.          
  2689.          Pop Proc
  2690.       End If 
  2691.       '
  2692.    Loop 
  2693.    '
  2694. End Proc
  2695. Procedure _ABOUT
  2696.    '
  2697.    Screen 0
  2698.    '  
  2699. _CENTRE_TEXT[10,"SCORE:"+FILE$]
  2700.    _3D_DISPLAY[30,15,578,65,0,3]
  2701.    '
  2702.    _CENTRE_TEXT2[24,"SONIC DRUM KIT VERSION "+VERSION$]
  2703.    _CENTRE_TEXT2[32,"---------------------------"]
  2704.    _CENTRE_TEXT2[42,"WELCOME TO THE SONIC DRUM KIT,I HOPE THAT YOU ENJOY USING IT"]
  2705.    _CENTRE_TEXT2[52,"I WILL BE PRODUCING SOME EXTRA DRUM KIT DISKS IN THE FUTURE"]
  2706.    _CENTRE_TEXT2[62,"SO AS TO EXPAND THE RANGE OF SOUNDS AVAILABLE TO YOU"]
  2707.    _CENTRE_TEXT2[74,"CLICK LEFT MOUSE BUTTON"]
  2708.    '
  2709.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  2710.    Screen Swap 
  2711.    Wait Vbl 
  2712.    '
  2713.    Wait 50
  2714.    '
  2715.    Repeat : Until Mouse Click
  2716.    '  
  2717.    _3D_DISPLAY[30,15,578,65,0,3]
  2718.    '
  2719.    _CENTRE_TEXT2[24,"GET IN CONTACT WITH ME!!!!"]
  2720.    _CENTRE_TEXT2[32,"--------------------------"]
  2721.    _CENTRE_TEXT2[42,"MALCOLM LAVERY"]
  2722.    _CENTRE_TEXT2[52,"20 SHAKESPEARE AV,ORGILL,EGREMONT"]
  2723.    _CENTRE_TEXT2[62,"CUMBRIA,CA22 2HF,ENGLAND"]
  2724.    _CENTRE_TEXT2[74,"CLICK LEFT MOUSE BUTTON"]
  2725.    '
  2726.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  2727.    Screen Swap 
  2728.    Wait Vbl 
  2729.    '
  2730.    Wait 50
  2731.    '
  2732.    Repeat : Until Mouse Click
  2733.    Wait 5
  2734.    
  2735.    _3D_DISPLAY[30,15,578,65,0,3]
  2736.    '
  2737.    _CENTRE_TEXT2[24,"PLEASE DO NOT COPY/SPREAD!"]
  2738.    _CENTRE_TEXT2[32,"--------------------------"]
  2739.    _CENTRE_TEXT2[42,"THIS PROGRAM IS NOT PUBLIC DOMAIN!"]
  2740.    _CENTRE_TEXT2[52,"THIS PROGRAM HAS TOOK ME A LONG TIME TO WRITE"]
  2741.    _CENTRE_TEXT2[62,"SO PLEASE DO NOT COPY OR SPREAD IT ABOUT,THANKS"]
  2742.    _CENTRE_TEXT2[74,"CLICK LEFT MOUSE BUTTON"]
  2743.    '
  2744.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  2745.    Screen Swap 
  2746.    Wait Vbl 
  2747.    '
  2748.    Wait 50
  2749.    '
  2750.    Repeat : Until Mouse Click
  2751.    Wait 5
  2752.    
  2753.    '
  2754.    _UPDATE[SCORE_POS]
  2755.    '
  2756. End Proc
  2757. Procedure _SAVE_SCORE
  2758.    '
  2759.    '
  2760.    F$=Fsel$("SDK:scores/*.SCR","","SAVE A SCORE","")
  2761.    '
  2762.    '
  2763.    If F$="" Then Pop Proc
  2764.    '
  2765.    Bsave F$,Start(8) To Start(8)+Length(8)
  2766.    '
  2767.    '
  2768. End Proc
  2769. Procedure _LOAD_SCORE
  2770.    '
  2771.    F$=Fsel$("SDK:scores/*.SCR","","LOAD A SCORE","")
  2772.    '
  2773.    If Exist(F$)
  2774.       If Upper$(Right$(F$,4))=".SCR"
  2775.          Open In 1,F$
  2776.          L=Lof(1)
  2777.          Close 1
  2778.          Erase 8
  2779.          Reserve As Chip Work 8,L
  2780.          Bload F$,Start(8)
  2781.          SCORE_POS=Start(8)+4
  2782.          POSITION=0
  2783.          MEM_1=SCORE_POS
  2784.          MEM_2=SCORE_POS
  2785.          MEM_3=SCORE_POS
  2786.          MEM_4=SCORE_POS
  2787.          MEM_5=SCORE_POS
  2788.          MEM_1_1=0
  2789.          MEM_2_2=0
  2790.          MEM_3_3=0
  2791.          MEM_4_4=0
  2792.          MEM_5_5=0
  2793.          LAST_EDITED=SCORE_POS
  2794.          LAST_POS=0
  2795.          Screen 0
  2796.          '
  2797.          _CENTRE_TEXT[10,"SCORE:"+F$]
  2798.          _3D_METER[30,85,240,10,Length(8)/72,6,4]
  2799.          Wait Vbl 
  2800.          '
  2801.          _UPDATE[SCORE_POS]
  2802.  
  2803.       End If 
  2804.    End If 
  2805.    '
  2806. End Proc
  2807. Procedure _LOAD_MODULE
  2808.    '
  2809.    F$=Fsel$("SDK:modules/*.MOD","","LOAD A MODULE","")
  2810.    '
  2811.    If Exist(F$)
  2812.       If Upper$(Right$(F$,4))=".MOD"
  2813.          Erase 2
  2814.          Erase 5
  2815.          Erase 8
  2816.          Load F$
  2817.          _TEMPO=Peek(Start(8))
  2818.          _LOOP_FLAG=Peek(Start(8)+2)
  2819.          SCORE_POS=Start(8)+4
  2820.          POSITION=0
  2821.          MEM_1=SCORE_POS
  2822.          MEM_2=SCORE_POS
  2823.          MEM_3=SCORE_POS
  2824.          MEM_4=SCORE_POS
  2825.          MEM_5=SCORE_POS
  2826.          MEM_1_1=0
  2827.          MEM_2_2=0
  2828.          MEM_3_3=0
  2829.          MEM_4_4=0
  2830.          MEM_5_5=0
  2831.          LAST_EDITED=SCORE_POS
  2832.          LAST_POS=0
  2833.          _SAMPLE=1
  2834.          Screen 0
  2835.          _CENTRE_TEXT[10,"SCORE:"+F$]
  2836.          '
  2837.          _3D_METER[30,85,240,10,Length(8)/72,6,4]
  2838.          '
  2839.          Wait Vbl 
  2840.          '
  2841.          _UPDATE[SCORE_POS]
  2842.          Screen 2
  2843.          _3D_DISPLAY[0,11,639,15,1,3]
  2844.          '
  2845.          I=2
  2846.          For X=0 To 640 Step 32
  2847.             If I<Length(2)/2+2
  2848.                If I=2
  2849.                   Paste Icon X,11,I+Length(2)/2
  2850.                Else 
  2851.                   Paste Icon X,11,I
  2852.                End If 
  2853.             End If 
  2854.             Inc I
  2855.          Next X
  2856.          '
  2857.          Screen 4
  2858.          '
  2859.          '
  2860.          If _LOOP_FLAG=0
  2861.             _3D_BUTTON[17,541,2,45,10,1,"LOOP",3,0]
  2862.          End If 
  2863.          '
  2864.          If _LOOP_FLAG=1
  2865.             _3D_BUTTON[17,541,2,45,10,0,"ON",4,0]
  2866.          End If 
  2867.          '
  2868.          _HOR_SLIDER_TEMPO[10,106,31,60,8,0,4,3,_TEMPO,1]
  2869.          '
  2870.       End If 
  2871.    End If 
  2872.    '
  2873. End Proc
  2874. Procedure _SAVE_MODULE
  2875.    '
  2876.    '
  2877.    F$=Fsel$("SDK:modules/*.MOD","","LOAD A MODULE","")
  2878.    '
  2879.    '
  2880.    If F$="" Then Pop Proc
  2881.    '
  2882.    Save F$
  2883.    '
  2884.    '
  2885. End Proc
  2886. Procedure _SAVE_BUFFER
  2887.    '
  2888.    '
  2889.    F$=Fsel$("SDK:cuts/*.CUT","","SAVE A CUT","")
  2890.    '
  2891.    If F$="" Then Pop Proc
  2892.    '
  2893.    Bsave F$,Start(9) To Start(9)+Length(9)
  2894.    '
  2895.    '
  2896. End Proc
  2897. Procedure _LOAD_BUFFER
  2898.    '
  2899.    F$=Fsel$("SDK:cuts/*.CUT","","LOAD A CUT","")
  2900.    '
  2901.    If Exist(F$)
  2902.       If Upper$(Right$(F$,4))=".CUT"
  2903.          Open In 1,F$
  2904.          L=Lof(1)
  2905.          Close 1
  2906.          Erase 9
  2907.          Reserve As Chip Work 9,L
  2908.          Bload F$,Start(9)
  2909.          '
  2910.       End If 
  2911.    End If 
  2912.    '
  2913. End Proc
  2914. Procedure _LOAD_KIT
  2915.    '
  2916.    F$=Fsel$("SDK:Drum_Kits/*.KIT","","LOAD A DRUM KIT","")
  2917.    '
  2918.    If Exist(F$)
  2919.       ''      If Upper$(Right$(F$,4))=".KIT" 
  2920.       Erase 2
  2921.       Erase 5
  2922.       Erase 8
  2923.       Load F$
  2924.       '
  2925.       Reserve As Chip Work 8,1000
  2926.       Poke(Start(8)),_TEMPO
  2927.       Poke(Start(8)+1),_VOLUME
  2928.       SCORE_POS=Start(8)+4
  2929.       POSITION=0
  2930.       MEM_1=SCORE_POS
  2931.       MEM_2=SCORE_POS
  2932.       MEM_3=SCORE_POS
  2933.       MEM_4=SCORE_POS
  2934.       MEM_5=SCORE_POS
  2935.       MEM_1_1=0
  2936.       MEM_2_2=0
  2937.       MEM_3_3=0
  2938.       MEM_4_4=0
  2939.       MEM_5_5=0
  2940.       LAST_EDITED=SCORE_POS
  2941.          LAST_POS=0
  2942.       PADS(1)=1
  2943.       PADS(2)=1
  2944.       PADS(3)=1
  2945.       PADS(4)=1
  2946.       PADS(5)=1
  2947.       PADS(6)=1
  2948.       '
  2949.       KEYS$(1)=""
  2950.       KEYS$(2)=""
  2951.       KEYS$(3)=""
  2952.       KEYS$(4)=""
  2953.       KEYS$(5)=""
  2954.       KEYS$(6)=""
  2955.       '
  2956.       _SAMPLE=1
  2957.       '
  2958.       Screen 0
  2959.       _CENTRE_TEXT[10,"SCORE:"+FILE$]
  2960.       _3D_METER[30,85,240,10,Length(8)/72,6,4]
  2961.       Screen 4
  2962.       '
  2963.       _UPDATE[SCORE_POS]
  2964.       Screen 2
  2965.       _3D_DISPLAY[0,11,639,15,1,3]
  2966.       '
  2967.       I=2
  2968.       For X=0 To 640 Step 32
  2969.          If I<Length(2)/2+2
  2970.             If I=2
  2971.                Paste Icon X,11,I+Length(2)/2
  2972.             Else 
  2973.                Paste Icon X,11,I
  2974.             End If 
  2975.          End If 
  2976.          Inc I
  2977.       Next X
  2978.       '
  2979.    End If 
  2980.    '   End If 
  2981.    '
  2982. End Proc
  2983. Procedure _ADD[MUCH]
  2984.    '
  2985.    L=Length(8)
  2986.    '
  2987.    Reserve As Chip Work 10,L+MUCH
  2988.    '
  2989.    Copy Start(8),Start(8)+Length(8) To Start(10)
  2990.    '
  2991.    Reserve As Chip Work 8,Length(10)
  2992.    Copy Start(10),Start(10)+Length(10) To Start(8)
  2993.    Poke(Start(8)),_TEMPO
  2994.    Poke(Start(8)+1),_VOLUME
  2995.    Poke(Start(8)+2),_LOOP_FLAG
  2996.    '
  2997.    SCORE_POS=Start(8)+(Length(8)-76)
  2998.    POSITION=(Length(8)-77)/4
  2999.    _UPDATE[SCORE_POS]
  3000.    '
  3001.    Erase 10
  3002.    '
  3003. End Proc
  3004. Procedure _SORRY
  3005.    '
  3006.    Screen 0
  3007.    '  
  3008.    _3D_DISPLAY[30,15,578,65,0,3]
  3009.    '
  3010.    _CENTRE_TEXT2[40,"NOT IN THIS VERSION"]
  3011.    _CENTRE_TEXT2[48,"*******************"]
  3012.    _CENTRE_TEXT2[75,"CLICK LEFT MOUSE BUTTON"]
  3013.    '
  3014.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  3015.    Screen Swap 
  3016.    Wait Vbl 
  3017.    '
  3018.    Wait 5
  3019.    '
  3020.    Repeat : Until Mouse Click
  3021.    '
  3022.    _UPDATE[SCORE_POS]
  3023.    '
  3024. End Proc
  3025. Procedure _SWAP
  3026.    '
  3027.    _SAMPLE_A=0
  3028.    _SAMPLE_B=0
  3029.    '
  3030.    Screen 0
  3031.    '  
  3032.    _3D_DISPLAY[160,20,320,50,1,3]
  3033.    '
  3034.    _CENTRE_TEXT2[30,"PICK A SAMPLE TO SWAP"]
  3035.    '
  3036.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  3037.    Screen Swap 
  3038.    Wait Vbl 
  3039.    '
  3040.    Wait 5
  3041.    '
  3042.    Screen 2
  3043.    '
  3044.    Repeat 
  3045.       X=X Screen(2,X Mouse)/32
  3046.       Y=Y Screen(2,Y Mouse+5)/16
  3047.    Until Mouse Key=1 and Scin(X Mouse,Y Mouse)=2 and X<Length(2)/2 and Y>0
  3048.    '
  3049.    _3D_DISPLAY[0,11,639,15,1,3]
  3050.    I=2
  3051.    For XP=0 To 640 Step 32
  3052.       If I<Length(2)/2+2
  3053.          Paste Icon XP,11,I
  3054.       End If 
  3055.       Inc I
  3056.    Next XP
  3057.    Paste Icon X*32,Y*16-5,X+Length(2)/2+2
  3058.    _SAMPLE=X+1
  3059.    Sam Play %1000,_SAMPLE,14000
  3060.    _SAMPLE_A=_SAMPLE
  3061.    '
  3062.    '   '
  3063.    Screen 0
  3064.    '  
  3065.    _3D_DISPLAY[160,20,320,50,1,3]
  3066.    '
  3067.    _CENTRE_TEXT2[30,"SWAP SAMPLE"]
  3068.    '
  3069.    Paste Icon 256,38,_SAMPLE_A+1
  3070.    '
  3071.    _CENTRE_TEXT2[49,"TO"]
  3072.    '
  3073.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  3074.    Screen Swap 
  3075.    Wait Vbl 
  3076.    '
  3077.    Wait 50
  3078.    '
  3079.    Screen 2
  3080.    '
  3081.    Repeat 
  3082.       X=X Screen(2,X Mouse)/32
  3083.       Y=Y Screen(2,Y Mouse+5)/16
  3084.    Until Mouse Key=1 and Scin(X Mouse,Y Mouse)=2 and X<Length(2)/2 and Y>0
  3085.    '
  3086.    _3D_DISPLAY[0,11,639,15,1,3]
  3087.    I=2
  3088.    For XP=0 To 640 Step 32
  3089.       If I<Length(2)/2+2
  3090.          Paste Icon XP,11,I
  3091.       End If 
  3092.       Inc I
  3093.    Next XP
  3094.    Paste Icon X*32,Y*16-5,X+Length(2)/2+2
  3095.    _SAMPLE=X+1
  3096.    Sam Play %1000,_SAMPLE,14000
  3097.    _SAMPLE_B=_SAMPLE
  3098.    '
  3099.    Screen 0
  3100.    '  
  3101.    _3D_DISPLAY[160,20,320,50,1,3]
  3102.    '
  3103.    _CENTRE_TEXT2[30,"SWAPING SAMPLES"]
  3104.    '
  3105.    Paste Icon 256,38,_SAMPLE_A+1
  3106.    Paste Icon 350,38,_SAMPLE_B+1
  3107.    '
  3108.    _CENTRE_TEXT2[49,"TO"]
  3109.    '
  3110.    _CENTRE_TEXT2[66,"PLEASE WAIT"]
  3111.    '
  3112.    Screen Copy 0,30,15,610,100 To Logic(3),30,15
  3113.    Screen Swap 
  3114.    Wait Vbl 
  3115.    '
  3116.    If TRACK_1=1
  3117.       For POS=Start(8)+4 To Start(8)+4+Length(8)-8 Step 4
  3118.          If Peek(POS)=_SAMPLE_A
  3119.             Poke(POS),_SAMPLE_B
  3120.          End If 
  3121.       Next POS
  3122.    End If 
  3123.    '
  3124.    If TRACK_2=1
  3125.       For POS=Start(8)+5 To Start(8)+4+Length(8)-7 Step 4
  3126.          If Peek(POS)=_SAMPLE_A
  3127.             Poke(POS),_SAMPLE_B
  3128.          End If 
  3129.       Next POS
  3130.    End If 
  3131.    '
  3132.    If TRACK_3=1
  3133.       For POS=Start(8)+6 To Start(8)+4+Length(8)-6 Step 4
  3134.          If Peek(POS)=_SAMPLE_A
  3135.             Poke(POS),_SAMPLE_B
  3136.          End If 
  3137.       Next POS
  3138.    End If 
  3139.    '
  3140.    If TRACK_4=1
  3141.       For POS=Start(8)+7 To Start(8)+4+Length(8)-5 Step 4
  3142.          If Peek(POS)=_SAMPLE_A
  3143.             Poke(POS),_SAMPLE_B
  3144.          End If 
  3145.       Next POS
  3146.    End If 
  3147.    '
  3148.    Wait 100
  3149.    '
  3150.    _UPDATE[SCORE_POS]
  3151.    '
  3152. End Proc
  3153. Procedure _QUIT
  3154.    '
  3155.    Screen 4
  3156.    '
  3157.    Get Block 1,0,0,640,70
  3158.    '
  3159.    _DARKEN[4,0,0,640,70]
  3160.    '  
  3161.    _3D_DISPLAY[200,20,240,42,1,6]
  3162.    _3D_DISPLAY[205,22,230,10,0,3]
  3163.    _3D_DISPLAY[205,34,230,26,0,3]
  3164.    '
  3165.    _CENTRE_TEXT2[30,"REALLY QUIT?"]
  3166.    '
  3167.    _3D_BUTTON[40,220,43,60,10,1,"YES",3,0]
  3168.    _3D_BUTTON[41,360,43,60,10,1,"NO",3,0]
  3169.    '
  3170.    Do 
  3171.       '
  3172.       M=Mouse Zone
  3173.       '
  3174.       If Mouse Key=1 and M=41
  3175.          _3D_BUTTON[41,360,43,60,10,0,"NO",4,0]
  3176.          Wait 10
  3177.          Put Block 1
  3178.          Del Block 1
  3179.          Pop Proc
  3180.       End If 
  3181.       '
  3182.       If Mouse Key=1 and M=40
  3183.          _3D_BUTTON[40,220,43,60,10,0,"YES",4,0]
  3184.          Wait 10
  3185.          Erase All 
  3186.          Screen Close 0
  3187.          Screen 2
  3188.          Fade 1
  3189.          Wait 20
  3190.          Screen 3
  3191.          Fade 1
  3192.          Wait 20
  3193.          Screen 4
  3194.          Fade 1
  3195.          Wait 20
  3196.          End 
  3197.          Screen Close 2
  3198.          Screen Close 3
  3199.          Screen Close 4
  3200.       End If 
  3201.       '
  3202.    Loop 
  3203. End Proc
  3204. Procedure _DARKEN[DES,X1,Y1,X2,Y2]
  3205.    '
  3206.    Screen DES
  3207.    '
  3208.    Ink 0,0
  3209.    Gr Writing 0
  3210.    Set Pattern 2
  3211.    '
  3212.    Bar X1,Y1 To X2,Y2
  3213.    '
  3214.    Gr Writing 1
  3215.    Set Pattern 0
  3216.    '
  3217. End Proc
  3218. Procedure _MEMORY_BUTTONS
  3219.    '
  3220.    If Mouse Zone=38 and Mouse Key=1
  3221.       _3D_BUTTON[38,523,18,20,10,0,"M1",4,0]
  3222.       _3D_BUTTON[39,546,18,20,10,1,"M2",3,0]
  3223.       _3D_BUTTON[40,570,18,20,10,1,"M3",3,0]
  3224.       _3D_BUTTON[41,594,18,20,10,1,"M4",3,0]
  3225.       _3D_BUTTON[42,618,18,20,10,1,"M5",3,0]
  3226.       MEM_FLAG1=1
  3227.       MEM_FLAG2=0
  3228.       MEM_FLAG3=0
  3229.       MEM_FLAG4=0
  3230.       MEM_FLAG5=0
  3231.       MESSAGE["       Memory bank one!        "]
  3232.    End If 
  3233.    '
  3234.    If Mouse Zone=39 and Mouse Key=1
  3235.       _3D_BUTTON[38,523,18,20,10,1,"M1",3,0]
  3236.       _3D_BUTTON[39,546,18,20,10,0,"M2",4,0]
  3237.       _3D_BUTTON[40,570,18,20,10,1,"M3",3,0]
  3238.       _3D_BUTTON[41,594,18,20,10,1,"M4",3,0]
  3239.       _3D_BUTTON[42,618,18,20,10,1,"M5",3,0]
  3240.       MEM_FLAG1=0
  3241.       MEM_FLAG2=1
  3242.       MEM_FLAG3=0
  3243.       MEM_FLAG4=0
  3244.       MEM_FLAG5=0
  3245.       MESSAGE["       Memory bank two!        "]
  3246.    End If 
  3247.    '
  3248.    If Mouse Zone=40 and Mouse Key=1
  3249.       _3D_BUTTON[38,523,18,20,10,1,"M1",3,0]
  3250.       _3D_BUTTON[39,546,18,20,10,1,"M2",3,0]
  3251.       _3D_BUTTON[40,570,18,20,10,0,"M3",4,0]
  3252.       _3D_BUTTON[41,594,18,20,10,1,"M4",3,0]
  3253.       _3D_BUTTON[42,618,18,20,10,1,"M5",3,0]
  3254.       MEM_FLAG1=0
  3255.       MEM_FLAG2=0
  3256.       MEM_FLAG3=1
  3257.       MEM_FLAG4=0
  3258.       MEM_FLAG5=0
  3259.       MESSAGE["      Memory bank three!       "]
  3260.    End If 
  3261.    '
  3262.    If Mouse Zone=41 and Mouse Key=1
  3263.       _3D_BUTTON[38,523,18,20,10,1,"M1",3,0]
  3264.       _3D_BUTTON[39,546,18,20,10,1,"M2",3,0]
  3265.       _3D_BUTTON[40,570,18,20,10,1,"M3",3,0]
  3266.       _3D_BUTTON[41,594,18,20,10,0,"M4",4,0]
  3267.       _3D_BUTTON[42,618,18,20,10,1,"M5",3,0]
  3268.       MEM_FLAG1=0
  3269.       MEM_FLAG2=0
  3270.       MEM_FLAG3=0
  3271.       MEM_FLAG4=1
  3272.       MEM_FLAG5=0
  3273.       MESSAGE["       Memory bank four!       "]
  3274.    End If 
  3275.    '
  3276.    If Mouse Zone=42 and Mouse Key=1
  3277.       _3D_BUTTON[38,523,18,20,10,1,"M1",3,0]
  3278.       _3D_BUTTON[39,546,18,20,10,1,"M2",3,0]
  3279.       _3D_BUTTON[40,570,18,20,10,1,"M3",3,0]
  3280.       _3D_BUTTON[41,594,18,20,10,1,"M4",3,0]
  3281.       _3D_BUTTON[42,618,18,20,10,0,"M5",4,0]
  3282.       MEM_FLAG1=0
  3283.       MEM_FLAG2=0
  3284.       MEM_FLAG3=0
  3285.       MEM_FLAG4=0
  3286.       MEM_FLAG5=1
  3287.       MESSAGE["       Memory bank five!       "]
  3288.    End If 
  3289.    '
  3290.    Wait 30
  3291.    '
  3292. End Proc
  3293. Procedure _STORE
  3294.    '
  3295.    _3D_BUTTON[43,523,34,55,10,0,"STORE",4,0]
  3296.    '
  3297.    If MEM_FLAG1=1
  3298.       MEM_1=SCORE_POS
  3299.       MEM_1_1=POSITION
  3300.       MESSAGE[" Storing position in bank one! "]
  3301.    End If 
  3302.    '
  3303.    If MEM_FLAG2=1
  3304.       MEM_2=SCORE_POS
  3305.       MEM_2_2=POSITION
  3306.       MESSAGE[" Storing position in bank two! "]
  3307.    End If 
  3308.    '
  3309.    If MEM_FLAG3=1
  3310.       MEM_3=SCORE_POS
  3311.       MEM_3_3=POSITION
  3312.       MESSAGE["Storing position in bank three!"]
  3313.    End If 
  3314.    '
  3315.    If MEM_FLAG4=1
  3316.       MEM_4=SCORE_POS
  3317.       MEM_4_4=POSITION
  3318.       MESSAGE[" Storing position in bank four!"]
  3319.    End If 
  3320.    '
  3321.    If MEM_FLAG5=1
  3322.       MEM_5=SCORE_POS
  3323.       MEM_5_5=POSITION
  3324.       MESSAGE[" Storing position in bank five!"]
  3325.    End If 
  3326.    '
  3327.    Wait 50
  3328.    _3D_BUTTON[43,523,34,55,10,1,"STORE",3,0]
  3329.    '
  3330. End Proc
  3331. Procedure _GOTO
  3332.    '
  3333.    _3D_BUTTON[44,582,34,55,10,0,"GOTO",4,0]
  3334.    '
  3335.    If MEM_FLAG1=1
  3336.       SCORE_POS=MEM_1
  3337.       POSITION=MEM_1_1
  3338.       _UPDATE[SCORE_POS]
  3339.       MESSAGE["  Goto position in bank one!   "]
  3340.    End If 
  3341.    '
  3342.    If MEM_FLAG2=1
  3343.       SCORE_POS=MEM_2
  3344.       POSITION=MEM_2_2
  3345.       _UPDATE[SCORE_POS]
  3346.       MESSAGE["  Goto position in bank two!   "]
  3347.    End If 
  3348.    '
  3349.    If MEM_FLAG3=1
  3350.       SCORE_POS=MEM_3
  3351.       POSITION=MEM_3_3
  3352.       _UPDATE[SCORE_POS]
  3353.       MESSAGE[" Goto position in bank three!  "]
  3354.    End If 
  3355.    '
  3356.    If MEM_FLAG4=1
  3357.       SCORE_POS=MEM_4
  3358.       POSITION=MEM_4_4
  3359.       _UPDATE[SCORE_POS]
  3360.       MESSAGE["  Goto position in bank four!  "]
  3361.    End If 
  3362.    '
  3363.    If MEM_FLAG5=1
  3364.       SCORE_POS=MEM_5
  3365.       POSITION=MEM_5_5
  3366.       _UPDATE[SCORE_POS]
  3367.       MESSAGE["  Goto position in bank five!  "]
  3368.    End If 
  3369.    '
  3370.    Screen 4
  3371.    '
  3372.    '
  3373.    Wait 50
  3374.    _3D_BUTTON[44,582,34,55,10,1,"GOTO",3,0]
  3375.    '
  3376. End Proc
  3377. Procedure _LAST
  3378.    '
  3379.    _3D_BUTTON[45,523,50,115,10,0,"LAST EDITED",4,0]
  3380.    '
  3381.    SCORE_POS=LAST_EDITED
  3382.    '
  3383.    POSITION=LAST_POS
  3384.    _UPDATE[SCORE_POS]
  3385.       MESSAGE["  Goto last edited position!   "]
  3386.    Screen 4
  3387.    '
  3388.    Wait 40
  3389.    _3D_BUTTON[45,523,50,115,10,1,"LAST EDITED",3,0]
  3390.    '
  3391. End Proc